一尘不染

有人可以解释一下:0.2 + 0.1 = 0.30000000000000004吗?

python

为什么在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呢?


阅读 109

收藏
2020-12-20

共1个答案

一尘不染

那是因为.1不能以二进制浮点表示形式精确表示。如果你试试

>>> .1

Python会做出响应,.1因为它只能打印出一定的精度,但是已经存在一个小的舍入错误。也会发生同样的情况.3,但是当您发出

>>> .2 + .1
0.30000000000000004

然后四舍五入误差.2.1累积。另请注意:

>>> .2 + .1 == .3
False
2020-12-20