这个问题已经在这里有了答案:
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