Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 为什么我的;如果;不排除零的语句?_Python 3.x_If Statement_Divide By Zero - Fatal编程技术网

Python 3.x 为什么我的;如果;不排除零的语句?

Python 3.x 为什么我的;如果;不排除零的语句?,python-3.x,if-statement,divide-by-zero,Python 3.x,If Statement,Divide By Zero,我必须在这里除以一些值,但是因为它是零,所以会给出一个“零除法误差”。 因此,我编写了以下代码 如果列出实际收入[x]!=0.00或列出实际收入[x]!=0: 打印(“*************************”) 打印(列表\实际\收入[x]) 打印(“*************************”) 值\修订=浮动(列表\预测\收入[x])-浮动(列表\实际\收入[x]) 价值修订=价值修订/浮动(列出实际收入[x]) 我得到的错误是 value_rev = valu

我必须在这里除以一些值,但是因为它是零,所以会给出一个“零除法误差”。 因此,我编写了以下代码

如果列出实际收入[x]!=0.00或列出实际收入[x]!=0:
打印(“*************************”)
打印(列表\实际\收入[x])
打印(“*************************”)
值\修订=浮动(列表\预测\收入[x])-浮动(列表\实际\收入[x])
价值修订=价值修订/浮动(列出实际收入[x])
我得到的错误是

    value_rev = value_rev / float(list_actual_revenue[x])
ZeroDivisionError: float division by zero
所以我决定打印出这些值,看看发生了什么

********************
3120.00
********************
********************
3055.00
********************
********************
11625.00
********************
********************
11937.50
********************
********************
3000.00
********************
********************
3000.00
********************
********************
3000.00
********************
********************
3000.00
********************
********************
3000.00
********************
********************
3000.00
********************
********************
0.00
********************
如您所见,最后一行是“0.00”。
我的问题是:如果“if语句”必须排除它,为什么0.00会出现?

是的,我能感觉到你的痛苦。 如果您使用的是浮点运算,则永远不要使用“==”或“!=”运算符。 相反,请尝试检查list_actual_revenue[x]的绝对值是否大于0


或者,您可以尝试捕获错误,然后像下面这样处理零情况:

请提供一些示例数据,以便我们可以。您是否在修改脚本后保存了它(以防万一)?您使用的数据类型是什么?因为
print(…)
打印两个尾随的零,所以它似乎不是
float
,因为它只有一个尾随的零。一般来说,你不应该像以前那样比较float,因为比较小数字或小数点多的数字会表现出有趣的行为。使用list_actual_revenue[x]>0,看看会发生什么。为什么?你能为你的索赔提供一些证据吗?谷歌有大量的资料来解释为什么会出现这种情况。我想知道这与零除法错误和检查零是否相等有什么关系。此操作定义良好,没有任何准确性问题。