当我运行我的代码时,数字变成 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)
请您参考如下方法:
因为它不是 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:
或查看 this answer .
