【问题标题】:Sum of floats: unexpected result [duplicate]浮点数总和:意外结果[重复]
【发布时间】:2015-07-13 14:01:28
【问题描述】:

下面的输出让我吃惊:

1.1 + 2.2
=> 3.3000000000000003

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

3.0 + 0.3
=> 3.3

我在 Python 2.7 和 3.4 中都试过了,但结果是一样的。求和结果出人意料的原因是什么?

【问题讨论】:

标签: python python-2.7 python-3.x digit


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      有关更完整的讨论,请参阅:python floating numberLimiting floats to two decimal points,但合理的解决方案可能是指定所需的精度,例如:

      >>> a = 1.1 + 2.2
      >>> a = round(a,1)
      >>> a 
      3.3
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-17
        • 1970-01-01
        • 2021-09-07
        • 2020-06-13
        相关资源
        最近更新 更多