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),因为它是非理性的!

你真的认为 sqrt(3)正好等于1.7320508075688772 吗?

于 2013-06-07T13:29:09.620 回答
3

这是指数符号。4 次 10^(-16) 对我来说是正确的(在浮点精度的范围内)。

于 2013-06-07T13:29:34.637 回答