0

2.99999...から減算すると奇妙な結果が得られるのはなぜ3ですか?

scala> math.sqrt(3)
res0: Double = 1.7320508075688772

scala> math.pow(res0, 2)
res1: Double = 2.9999999999999996

scala> 3 - res1
res2: Double = 4.440892098500626E-16
4

2 に答える 2

7

これは浮動小数点の精度によるものです。16 ビット、32 ビット、および 64 ビットの IEEE- 754 システムで表現できる数値の範囲は?

また、完全なコンピューターが sqrt(3) を 10 進数で表すことは無理数であるため、ここで注意する価値があります。

sqrt(3) が正確に1.7320508075688772に等しいと本当に思いましたか?

于 2013-06-07T13:29:09.620 に答える
3

これは指数表記です。4 回 10^(-16) は私には正しいように見えます (浮動小数点精度の制限内)。

于 2013-06-07T13:29:34.637 に答える