1

重複の可能性:
JavaScript の数学は壊れていますか?

フロートを通貨に変換しようとするために、javascript でいくつかの非常に基本的な関数を実行しています。例えば:

var t = Array(15.90, 15.95, 15.95);
var x = t[0];
if(x%1 == 0)
output += ".0";
if(x%.1 == 0)
output += "0";

出力は になるはず0ですが、何らかの理由でこれが機能しない場合があり、 x の値をコンソールにエコーすると、15.89999999999またはが得られます15.900000000001。なんで?

ご協力いただきありがとうございます。

4

1 に答える 1

1

toFixed()必要な小数点以下の桁数を出力するだけです:

var priceString = price.toFixed(2);

これにより、常に小数点以下2桁にフォーマットされた数値が得られます。

ここにいる多くの人が、通貨ベースの計算に浮動小数点を使用しないように言うことを知っています。ただし、浮動小数点数の精度は妥当な金額には十分すぎることがわかりました。大きな金額に小さなパーセンテージをかけない限り、ペニーを失うことはありません。例えば:1000000 * .0000001 = .099999999

于 2012-10-31T23:41:41.423 に答える