0

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

ここに私のコードのjavascriptとhtmlコードがあります

特定のフィールドを計算すると、奇妙な値が得られます。現在、1 つのチェックボックスのみにスクリプト (バックグラウンド ミュージック アドオン) があり、3 インチ リールのいずれかでそのアドオンを選択した場合にのみ、合計価格が 24.990000000000002 になります。それは非常に奇妙です.それらの入力だけで...それはちょうど24.99であるはずです....他のすべての入力は機能し、正確な合計を提供しますが、3つの3inフィールドだけがそれらの数値を提供します...試行錯誤を通じて、問題はここにあります

regthreetot = parseFloat(regthree * 50);
regfourtot = parseFloat(regfour * 100);
regfivetot = parseFloat(regfive * 200);
regsixtot = parseFloat(regsix * 300);
regseventot = parseFloat(regseven * 400);
supthreetot = parseFloat(supthree * 50);
supfourtot = parseFloat(supfour * 100);
supfivetot = parseFloat(supfive * 200);
supsixtot = parseFloat(supsix * 300);
supseventot = parseFloat(supseven * 400);
sixthreetot = parseFloat(sixthree * 50);
sixfourtot = parseFloat(sixfour * 100);
sixfivetot = parseFloat(sixfive * 200);
sixsixtot = parseFloat(sixsix * 300);
sixseventot = parseFloat(sixseven * 400);

regthree、supthree、および sixtree の値はすべて 50 で乗算されます...他のすべての値は 3 桁の値で乗算されます...50 を 100 に変更すると、通常の答えが得られます...なぜここでは数字が重要ですが、それを修正するにはどうすればよいですか?

4

3 に答える 3

0

これは float 変数が 100% 正確ではないことが原因で、小数点以下 2 桁までに修正する必要があります。

n.toFixed(2)
于 2012-08-02T07:05:48.407 に答える
0

これは、フロート演算の仕組みが原因で発生します。小数点以下 2 桁に丸めることで回避できます (いずれにせよ、1 セント未満の端数は使用しません): http://jsfiddle.net/vSsW9/1/

于 2012-08-02T05:55:15.670 に答える
0

それが理解できるまでは、Math.Round を使用して小数点以下 2 桁に丸めることができます。結果のvarがresultと呼ばれると仮定します。result=Math.round(result*100)/100

于 2012-08-02T05:56:04.610 に答える