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

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

我对 Python 有点陌生。我在下面附上了一段代码。 constant_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

mcs=hash["MCF"]*constant_a/constant_b  

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

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

尝试使用 == 而不是 is:

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'

有关更多说明,请参阅 this post。本质上,== 测试相等性,is 测试精确的对象标识。

您在应该使用 == 的时候使用了 is

is 检查相同的实例。这个东西和这个其他东西

是一样的吗

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

我敢打赌,您正在检查 0 是否为 0.0,事实并非如此。然后,当您除以 0.0 时,您会得到错误。