【问题标题】:Python int float roundingPython int 浮点舍入
【发布时间】:2013-02-17 06:18:03
【问题描述】:

在玩python时,我遇到了这个:

a = 1/(2.2 - 2)

print a       #prints out 5.0
print int(a)  #prints out 4

我怀疑这个问题与二进制数表示有关(用二进制表示 1/5 就等于用十进制表示 1/3)。有人可以解释一下吗?

【问题讨论】:

    标签: python casting integer rounding


    【解决方案1】:

    你的怀疑是完全正确的。根本原因是2.2不能完全表示为float

    In [38]: '%.20f' % 2.2
    Out[38]: '2.20000000000000017764'
    

    其余的由此而来:

    In [45]: '%.20f' % (2.2 - 2)
    Out[45]: '0.20000000000000017764'
    
    In [46]: '%.20f' % (1 / (2.2 - 2))
    Out[46]: '4.99999999999999555911'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      • 2019-07-24
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多