python模块显示错误答案(floats模块)

时间:2018-12-29 19:06:57

标签: python-3.x

在这里不能很好地回答。 我的代码:

t = 0
i = 0
arrival = 7.2
while t < 3600:
    time_passed = 0.1
    if t % arrival == 0:
         i+=1
    t+= time_passed
print (i)

===>由于某种原因,我得到1。无法理解如何解决(应该是500) 编辑:我想知道如何更改代码以解决问题,而不是背后的理论。

1 个答案:

答案 0 :(得分:2)

这是由于浮点舍入问题。您可以阅读this帖子,了解其发生原因。

如果要快速修复,只需使用pythons十进制库即可。

from decimal import Decimal
t = 0
i = 0
arrival = Decimal('7.2')
while t < 3600:
    time_passed = Decimal('0.1')
    if t % arrival == 0:
         i+=1
    t+= time_passed
print (i)