为什么减去时会得到奇怪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),因为它是非理性的!
你真的认为 sqrt(3)正好等于1.7320508075688772 吗?
这是指数符号。4 次 10^(-16) 对我来说是正确的(在浮点精度的范围内)。