0

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

私はこの丸めの問題に遭遇しました:

私がこれをするとき:

 .2  + .1 results in 0.30000000000000004
 .7  + .1 results in 0.7999999999999999
1.1  + .1 results in 1.2000000000000002

等々...

誰かが(詳細に)理由を説明できますか?おそらくいくつかのバイナリ丸めのもの。しかし、私は本当に何が起こるかを知りたいです...

4

1 に答える 1

5

一言で言えば、.2実際には .2 ではないので。実際には、表現可能な最も近い倍精度数です。

0.200000000000000011102230246251565404236316680908203125.

同様に、.1本当に

0.1000000000000000055511151231257827021181583404541015625

これらを合計すると、結果は最も近い表現可能な数値に再び丸められます。

0.3000000000000000444089209850062616169452667236328125

最後に、それを印刷すると、その数値は 17 桁に丸められ、観察した結果が得られます。

他の例は同じパターンに従います。

于 2012-09-07T12:42:46.490 に答える