4

为什么 Python 中的后一种情况不会产生结果3.3

>>> 1.0 + 2.3
3.3
>>> 1.1 + 2.2
3.3000000000000003

对我来说,这里发生的事情似乎没有任何意义。对于您正在通过1.0 + 2.3但未通过的相同结果的表示,这里有什么限制1.1 + 2.2

4

1 回答 1

9

引用文档

不幸的是,大多数十进制分数不能完全表示为二进制分数。结果是,通常,您输入的十进制浮点数仅与实际存储在机器中的二进制浮点数近似。

你偶然发现的是许多特质之一:

>>> 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类会给你更好的结果。

于 2013-10-24T18:18:27.600 回答