当我运行我的代码时,数字变成42.0(它应该做什么) 但是当它变成42.0时会停止(虽然if语句或while循环)我怎么能让我的代码停止?
import time
def life(inp):
inp = float(inp)
while float(inp) != float(42):
inp = inp*12/4/4+4+6.5
if float(inp) == float(42) or inp == 42:
print inp
break
print inp
time.sleep(0.1)
life(6)
答案 0 :(得分:13)
因为不是 42.0,您可以通过Effect1
来查看。然后你会看到你实际上被困在41.999999999999985789145284797996282577514648437500000000000000。
或print '%.60f' % inp
,显示41.999999999999986(不是确切的存储值,但显示它不是42.0)。
如果您只是print repr(inp)
或print inp
,那么Python会显示该数字的“精美版本”,但这并不一定代表该数字。
您可能希望改为“足够接近”,例如:
print str(inp)
或查看this answer。