Python 中的浮点数精度有限

limited precision of floats in Python

我是 运行 Python 上的此代码(均为 2.7,3.x):

>>> 1.1 + 2.2
3.3000000000000003
>>> 1.1 + 2.3
3.4

有人可以解释一下它是如何工作的以及发生了什么吗?

float in Python 实现双点精度。除非一个数的分母是二次方,否则它不能精确地用 Python 表示,而只能用 "approximately" - 直到第 16 位。因此像:1、0.5、0.25这样的数字可以精确表示,但是像你的情况(3.3)这样的数字只能表示"approximately"。全部正确,直到16位,然后你得到最后3位,这是不正确的。