浮点数总和:意外结果[重复]

问题描述 投票:0回答:3

以下输出让我感到惊讶:

1.1 + 2.2
=> 3.3000000000000003

总和中出现了意想不到的小数字。对于其他加数则不会发生同样的情况,例如:

3.0 + 0.3
=> 3.3

我在Python 2.7和3.4中都尝试过,但结果是一样的。到底是什么原因导致这个意想不到的总和结果呢?

python digits
3个回答
2
投票

主要是因为二进制与十进制不能很好地配合(2 和 10 互质)并且浮点数的精度有限。


1
投票

最终,归根结底,计算机正在处理二进制数。 一些小数的转换并不像我们希望的二进制数那样整齐。 结果值包括一些剩余的数字垃圾。


1
投票

有关更完整的讨论,请参阅:python 浮点数将浮点数限制为两位小数,但合理的解决方案可能是指定所需的精度,例如:

>>> a = 1.1 + 2.2
>>> a = round(a,1)
>>> a 
3.3
© www.soinside.com 2019 - 2024. All rights reserved.