关于python:zerodivisionerror:float division by zero,即使我有一个zero catcher

ZeroDivisionError: float division by zero even though I have a zero catcher

我对Python有点陌生。我在下面附上了一段代码。常量"a&b"是整数。运行此代码时,出现以下错误:

Traceback (most recent call last): File"U:\V10_run2\process.py",
line 209, in
delta_mcs_2_gfx_percentage=(delta_mcs_2_gfx*100)/float(mcs) ZeroDivisionError: float division by zero

1
2
3
4
5
6
mcs=hash["MCF"]*constant_a/constant_b  

if mcs is 0:
      delta__percentage=-100
else:
      delta__percentage=(delta*100)/mcs

正如错误所说,我认为这是因为python试图对mcs进行整数除法(integer division)并将mcs取整为0,但我也尝试了float(delta*100)/float(mcs),这也没有帮助。有什么建议吗??


尝试使用==,而不是is

1
2
3
4
5
6
7
8
9
10
11
12
13
a = 0.0

if a is 0:
    print("is zero")
else:
    print("not zero")
# 'not zero'

if a == 0:
    print("== zero")
else:
    print("not zero")
# '== zero'

请看这篇文章了解更多的解释。从本质上讲,==检验是否相等,is检验是否准确的物体同一性。


当您应该使用==时,您使用的是is

is检查相同的实例。这东西和另一个一样吗

==检查相同或不同实例的相等性。0等于0.0吗?

我打赌你正在检查0是否是0.0,而不是0.0。然后,当你除以0.0,你就会得到这个错误。