私はPythonにかなり慣れていないので、特定の2次関数を解くためのコードを記述しようとしています。フロートの丸め誤差に問題があります。これは、非常に大きい2つの数値を非常に小さい差で除算しているためだと思います。(また、今のところ、すべての入力に実際の解があると仮定しています。)問題を示すために、2次方程式の2つの異なるバージョンを配置しました。ほとんどの入力で問題なく動作しますが、、を試してみると、a = .001
大きな違いがある2つの答えが得られます。これが私のコードです: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 = '')