反转浮动的怪异行为

时间:2016-01-19 16:55:33

标签: python python-3.x

使用Python 3.4.3

int(1 / 1e-3)

1000

int(1 / 1e-4)

10000

int(1 / 1e-5)

99999

int(1 / 1e-6)

百万

int(1 / 1e-7)

千万

错误或功能?有什么特别的原因吗?

1 个答案:

答案 0 :(得分:1)

浮点数并不准确。只有二​​进制数。

>>> '%.25f' % 1e-5
'0.0000100000000000000008180'
>>> '%.25f' % (1/1e-5)
'99999.9999999999854480847716331'

因此1/1e-5小于100000int切断了分形部分。 转换为int,舍入就是答案:

>>> int(round(1/1e-5))
100000