我对python很陌生,正在尝试编写一些代码来解决给定的二次函数。我在浮点数的舍入误差方面遇到了一些麻烦,我想是因为我将两个非常大但差异非常小的数字相除。(另外我假设所有输入现在都有真正的解决方案。)我已经放置了两个不同版本的二次方程来说明我的问题。它适用于大多数输入,但是当我尝试a = .001
,时b = 1000
,c = .001
我得到两个有显着差异的答案。这是我的代码:
from math import sqrt
a = float(input("Enter a: "))
b = float(input("Enter b: "))
c = float(input("Enter c: "))
xp = (-b+sqrt(b**2-4*a*c))/(2*a)
xn = (-b-sqrt(b**2-4*a*c))/(2*a)
print("The solutions are: x = ",xn,", ",xp,sep = '')
xp = (2*c)/(-b-sqrt(b**2-4*a*c))
xn = (2*c)/(-b+sqrt(b**2-4*a*c))
print("The solutions are: x = ",xn,", ",xp,sep = '')