私は、入力の根を見つける目的でPythonで二次方程式を作成しました。私は非常に特定の出力を期待していますが、私は自分のコードを書いたやり方で浮動小数点数を変換/丸めする方法や、例えば1e-9を返すコードを得る方法を知らない。どんな考えも大歓迎です。出力として二次関数を作成し、Pythonで特定のスタイルルーツを見つける
[-0.33333333333333334, 2.0]
[-inf, nan]
[-999999999.99999999791, 0.0]
をして取得したいと思い:私は現在取得しています
def find_roots(a,b,c):
d=(b**2)-(4*a*c)
if d <0:
print ([])
elif d==0:
x=(np.float128(-b+math.sqrt(d))/(2*a))
print(x)
else:
x1=(np.float128(-b-math.sqrt(d))/(2*a))
x2=(np.float128(-b+math.sqrt(d))/(2*a))
list=[x1,x2]
print (sorted(list, reverse=False))
find_roots(-3,5,2)
find_roots(0,5,4)
find_roots(1e-8,10,1e-8)
小数、小数:
[-1.0/3.0, 2.0]
[-0.8]
[1e-8, 10.0, 1e-8]
おそらく、より正確な浮動小数点数のためには、 'numpy'よりも' Decimal'モジュールが必要でしょう。 '-1.0/3.0'のような小数点については、フロートを分けてコードを分けて文字列として出力しない限り、それは起こりません。 – Peter
'a = 0'のとき、除算はゼロです。 – Unni
二次方程式を解く方法を変更する方法はありますか?ここでは、入力(0,5,4)で分子をゼロにすることを避けますか?即ち、x、x1及びx2を変化させるか? –