为什么 Python 中的后一种情况不会产生结果3.3
?
>>> 1.0 + 2.3
3.3
>>> 1.1 + 2.2
3.3000000000000003
对我来说,这里发生的事情似乎没有任何意义。对于您正在通过1.0 + 2.3
但未通过的相同结果的表示,这里有什么限制1.1 + 2.2
?
为什么 Python 中的后一种情况不会产生结果3.3
?
>>> 1.0 + 2.3
3.3
>>> 1.1 + 2.2
3.3000000000000003
对我来说,这里发生的事情似乎没有任何意义。对于您正在通过1.0 + 2.3
但未通过的相同结果的表示,这里有什么限制1.1 + 2.2
?
引用文档:
不幸的是,大多数十进制分数不能完全表示为二进制分数。结果是,通常,您输入的十进制浮点数仅与实际存储在机器中的二进制浮点数近似。
你偶然发现的是许多特质之一:
>>> 1.1 + 1.1
2.2
>>> 1.1 + 2.3
3.4
>>> 1.1 + 2.2
3.3000000000000003
事实上,这是一种罕见的情况,我很难找到其他事件。这是另一个奇怪的:
>>> 0.1 + 0.1 + 0.1 - 0.3
5.551115123125783e-17
使用 Python 的decimal
类会给你更好的结果。