这个问题已经在这里有了答案:




9年前关闭。






为什么在Python解释器中会发生以下情况?

>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17
>>> 0.1+0.1
0.2
>>> 0.2+0.1
0.30000000000000004
>>> 0.3-0.3
0.0
>>> 0.2+0.1
0.30000000000000004
>>>

为什么不0.2 + 0.1 = 0.3

最佳答案

这是因为.1无法以二进制浮点表示形式精确表示。如果你试试

>>> .1

Python将使用.1进行响应,因为它只能打印到一定的精度,但是已经存在一个小的舍入错误。 .3也会发生同样的情况,但是当您发出
>>> .2 + .1
0.30000000000000004

.2.1中的舍入错误会累积。另请注意:
>>> .2 + .1 == .3
False

08-25 02:49