gpt4 book ai didi

python - 为什么我的 if 语句显示为 false?当 a==0 时代码不会退出。时间应该以分钟/秒为单位

转载 作者:太空宇宙 更新时间:2023-11-04 10:52:04 25 4
gpt4 key购买 nike

我无法弄清楚为什么我的计时器在运行时没有达到零。我试图让窗口在 a=0 时关闭,但为什么一直减少到负数?这是我的代码

def close_timer(self):
global a
a = float(a - 0.1)
self.labeltext.set(str(("%.1f" % (a))))
a = float(a)
print a
print (a == 0)
if a == 0:
self.canvas.after(100)
self.root.destroy()
self.root.after(100,self.close_timer)

最佳答案

float 数学 is generally inaccurate - 你不能表示小数 0.1完全在二进制 float 中,因此你永远不会达到 0 :

>>> a = 1
>>> while a > 0:
... a = a - 0.1
... print(repr(a))
...
0.9
0.8
0.7000000000000001
0.6000000000000001
0.5000000000000001
0.40000000000000013
0.30000000000000016
0.20000000000000015
0.10000000000000014
1.3877787807814457e-16
-0.09999999999999987

使用 if abs(a) < 0.000001:或类似的东西。

关于python - 为什么我的 if 语句显示为 false?当 a==0 时代码不会退出。时间应该以分钟/秒为单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13206843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com