我偶然发现了一个非常奇怪的错误。阅读代码中的注释以了解究竟是什么错误,但本质上是一个模 1 的变量返回 1(但它不等于 1!)。我假设有一个显示问题,浮动非常接近一但不完全。但是,它应该模数为零。我不能轻易测试这种情况,因为 (last % 1) != 1.0 !当我尝试将相同的数字插入另一个 python 终端时,一切正常。这是怎么回事?
def r(k,i,p):
first = i*p
last = first + p
steps = int((i+1)*p) - int(i*p)
if steps < 1:
return p
elif steps >= 1:
if k == 0:
return 1 - (first % 1)
elif k == steps:
if i == 189:
print last, 1, type(last), last % 1, last - int(last)
# Prints: 73.0 1 <type 'float'> 1.0 1.0
print last % 1 == 1 # Returns False
if last % 1 == 1.0:
return 0
return (last % 1)
else:
return 1