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),这也没有帮助。有什么建议吗??
- mcs是浮点型还是int型?
- delta_mcs_2_gfx_percentage=(delta_mcs_2_gfx*100)/float(mcs) 没有出现在您提供给我们的代码片段中。错误消息告诉您错误发生的位置,并且它不会在您发布的那一小段代码中的任何地方发生。您是否使用带行号的IDE?转到第209行。
- 停止使用is,除非与None比较。
- @Jean-Fran和Oisfabre你不需要使用is来与None进行比较。这是python,不是sql。尽管过度使用is对初学者来说是一个常见的错误,但这并不能使其无效。有时,您确实关心区分是处理两个等价对象还是同一对象的两个引用。
- 我听说这是"惯用的",因为None是单件的。但==也起作用。您可以在不使用is的情况下对所有carreer进行编码。如果您必须使用is来测试它在一个操作程序中是否是同一个对象,那么您会遇到一个严重的问题。
尝试使用==,而不是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检验是否准确的物体同一性。
- 虽然在0should be CPython的高速缓存,除非我知道mcsthis is a浮法不解释他的错误。
- mcs浮法是Python 3 becuse是the result of a分:hash["MCF"]*constant_a/constant_b
- Jean Fran & @ # 231;他们不specify oisfabre POS是使用Python 3。
- but the message说:"除零浮法模式"
- Jean Fran & @ # 231;oisfabre 1.0/0会给你一样的误差。
- 好吧。在mcs浮法是明显的,其他是因为我在工作is 05256 - 0。
当您应该使用==时,您使用的是is。
is检查相同的实例。这东西和另一个一样吗
==检查相同或不同实例的相等性。0等于0.0吗?
我打赌你正在检查0是否是0.0,而不是0.0。然后,当你除以0.0,你就会得到这个错误。