当我运行我的代码时,数字变成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)
Run Code Online (Sandbox Code Playgroud)
Ste*_*ann 13
因为它不是 42.0,你可以通过print '%.60f' % inp改为看到它.然后你会看到你实际上被困在41.999999999999985789145284797996282577514648437500000000000000.
或者用print repr(inp),显示41.999999999999986(不是确切的存储值,但它表明它不是42.0).
如果您只是这样做print inp,print str(inp)那么Python会显示数字的"漂亮版本",但这并不一定代表数字.
您可能希望改为"足够接近",例如:
while abs(float(inp) - float(42)) > 1e-9:
Run Code Online (Sandbox Code Playgroud)
或者看看这个答案.