为什么Python中的后一种情况确实不会产生结果3.3
?
>>> 1.0 + 2.3
3.3
>>> 1.1 + 2.2
3.3000000000000003
这对我来说似乎没有任何意义。对于您通过1.0 + 2.3
但未通过1.1 + 2.2
获得的相同结果的表示有什么限制?
答案 0 :(得分:7)
不幸的是,大多数小数部分不能完全表示为二进制分数。结果是,通常,您输入的十进制浮点数仅通过实际存储在机器中的二进制浮点数近似。
你偶然发现的是许多特质之一:
>>> 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
类可以获得更好的结果。