4

小数を分数に変換するこの簡単なスクリプトを作成しましたが、機能しません。何も出力されません。

var decimal = 1.75;
var decimalArray = decimal.split("."); // 1.75
var leftDecimalPart = decimalArray[0]; // 1
var rightDecimalPart = decimalArray[1]; // 75

var numerator = leftDecimalPart + rightDecimalPart; // 175
var denominator = Math.pow(10, rightDecimalPart.length); // 100

document.write(numerator + " / " + denominator);

JSビン: http: //jsbin.com/exepir/1/edit

4

3 に答える 3

8

数値を「分割」することはできません。

コンソールを見ると、次のように表示されます。

Uncaught TypeError:オブジェクト1.75にはメソッド「split」がありません

JSBinのJavaScriptセクションを使用する必要があります。このようなエラーは、下部の赤いボックスに表示されます。

最も簡単な修正?文字列リテラルとして記述することにより、文字列にします。

var decimal = '1.75';

.toString()または、分割する前に電話してください。

var decimalArray = decimal.toString().split(".");

そして分子が一番上にあります:

document.write(numerator + " / " + denominator);
于 2013-01-24T21:19:17.680 に答える
2

文字列を操作することは問題を解決するための最良の方法ではないため、数字のみを操作する高速な代替ソリューションをお勧めします。

var decimal = 1.75,
    numerator = decimal,
    denominator = 1;

while (numerator % 1) numerator *= 10;
denominator = numerator / decimal;

console.log(numerator + " / " + denominator);
// >> "175 / 100"
于 2013-01-24T21:53:04.293 に答える
2

一般的なケースで確実に機能するようにしたい場合は、Fraction.jsなどの十分にテストされたライブラリを使用します。

var f = new Fraction(1.75);

console.log(f.toFraction()); // Results "1 3/4"
console.log(f.s * f.n + " / " + f.d); // Results "7 / 4"
console.log(f.toString()); // Results "1.75"
于 2015-06-04T12:17:44.977 に答える