我知道这个错误意味着什么,但我不知道为什么我在我的程序中得到它,我似乎无法让我的程序工作。
这是我得到的错误:
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)
以下是使用的值:
答案 0 :(得分:2)
calc_A
为0.0
,0
提升为任何权力(除了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