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
これは浮動小数点の精度によるものです。16 ビット、32 ビット、および 64 ビットの IEEE- 754 システムで表現できる数値の範囲は?
また、完全なコンピューターが sqrt(3) を 10 進数で表すことは無理数であるため、ここで注意する価値があります。
sqrt(3) が正確に1.7320508075688772に等しいと本当に思いましたか?
これは指数表記です。4 回 10^(-16) は私には正しいように見えます (浮動小数点精度の制限内)。