为什么我总是遇到ValueError:Python中的数学域错误?

为什么我总是遇到ValueError:Python中的数学域错误?,python,math,quadratic,Python,Math,Quadratic,所以我用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) p

所以我用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))
这就是代码。

这可能是因为如果4*a*c>b*b,Z变成负数,负数的平方根产生一个虚数。sqrt不接受负参数。
编辑:正如@jakub所说的,您可以尝试获取绝对值的平方根。

是否可能Z为负?你应该得到绝对值的平方根,不是吗?求绝对值的平方根不是一个好主意:它会导致打印没有任何实际解的二次方程的错误答案。