Python ZeroDivisionError

时间:2014-11-22 14:54:37

标签: python exception

我知道这个错误意味着什么,但我不知道为什么我在我的程序中得到它,我似乎无法让我的程序工作。

这是我得到的错误:

ZeroDivisionError: float division by zero

以下是我的代码中的一小段代码:

calc_A = round((math.log(y2) - math.log(y1))/(math.log(x2) - math.log(x1)), -1)
calc_B = round(y1/pow(calc_A, x1), -1)

以下是使用的值:

  • x1: 1
  • y1: 10
  • x2: 2
  • y2: 20

2 个答案:

答案 0 :(得分:2)

calc_A0.00提升为任何权力(除了0)仍为0

因此,y1/0会引发此异常。

您的问题是,您告诉round()舍入到10的最接近倍数(因为您将ndigits参数设置为-1)。

>>> x1=1
>>> y1=10
>>> x2=2
>>> y2=20
>>> math.log(x2) - math.log(x1)
0.6931471805599453
>>> math.log(y2) - math.log(y1)
0.693147180559945
>>> (math.log(y2) - math.log(y1))/(math.log(x2) - math.log(x1))
0.9999999999999996
>>> round(_, -1)
0.0
>>> round(0.99)
1.0

答案 1 :(得分:1)

由于具有负精度数字的圆函数,该错误发生。

检查一下。

number = 1.23456
print(round(number)) #1
print(round(number, 0)) # 1.0
print(round(number, 1)) # 1.2
print(round(number, 2)) # 1.23
print(round(number, 3)) # 1.235
print(round(number, -1)) # 0.0  
print(round(1234, -1)) #1230.0