首页 > 解决方案 > 为什么我不断收到 ValueError:Python 中的数学域错误?

问题描述

所以我在 Python 中制作了一个二次方程求解器,当计算发生时,出现了一个错误,我不确定发生了什么。

from math import sqrt

a = float(input("a: "))
b = float(input("b: "))
c = float(input("c: "))
Z = (b * b) - (4 * a * c)

x1 = ((-b) + float(sqrt(Z))) / (2 * a)
x2 = ((-b) - float(sqrt(Z))) / (2 * a)

print("x = " + str(x1))
print("x = " + str(x2))

这是代码。

标签: pythonmathquadratic

解决方案


这可能是因为如果(4 * a * c)> (b * b), Z 变为负数,负数的平方根导致虚数。math.sqrt()不带负参数。编辑:正如@jakub 所说,您可以尝试获取绝对值的平方根。


推荐阅读