2016-08-31 5 views
-1

だから私は数字に問題があります:Javascriptの丸めの数値が乗算で

私は483.65の価格で、アイテムを持っています。私が期待される結果があるべき7でこれを乗算したい:データベース内の数値は、浮動小数点数として格納されている

3385.5499999999997 

3385.55 

しかし、Javascriptがこのようレッズ。私は何をしないのです

enter image description here

:ここ

は、スクリーンショット、より良い状況を説明するためにありますか?

+0

クイックフィックス:番号を丸める:http://stackoverflow.com/questions/11832914/round-to-at-most-2-decimal-places-in-javascript –

答えて

1

浮動小数点演算には注意してください。js vmで使用されている浮動小数点標準のためです。 私は外部ライブラリなしでそれを修正するために見つけた1つのトリックは、1kで倍数に、1kで除算することです。 483.65 * 1000 * 7/1000 奇妙ですが、常に動作します。

+0

順序は重要です: '483.65 * 1000 * 7/1000 = 3385.55であり、一方、483.65 * 7 * 1000/1000 = 3385.5499999999997である。もちろん – Uzbekjon

+0

。私のコメントに書いたのと同じ順序を使用する必要があります。 – sagie

+0

これは偶然にも効くかもしれませんが、それに頼るべきではありません(IEEE 754規格を読んでください)。要件に応じて、 'toFixed()'、整数算術または任意の精度ライブラリを使用します。 –