0

非常に高い精度を必要とする Python コードを書いています。Numpy float64 の使用を開始しましたが、必要に応じて機能しませんでした。その後、「Decimal」モジュールの使用を開始しました。これは正常に機能しました。

しかし、理想的には、decimal モジュールを使用するよりも浮動小数点数を使用することをお勧めします。また、浮動小数点数を何らかの方法で操作して (乗算などによって) 精度レベルを達成できると誰かが言ったことを思い出します。

これは本当ですか、それとも私の記憶違いですか? これが少しあいまいな場合は申し訳ありません。

ありがとうございました!

4

2 に答える 2

2

持っている数の種類によって異なります。たとえば、間隔に値を追加する場合は、[1...2)offsett 値を使用する方がよい場合があります。

>>> a = 1.0000000000000000001
>>> a
1.0
>>> a+a
1.0
>>> a = 0.0000000000000000001
>>> a
1e-19

(n, f)より簡単に保存するには、n が自然数 (int) でありf、 interval の分数であるタプルとして記述できます[0...1)

ただし、そのような種類の値を使用した計算はトリッキーです。

>>> (1+1, a+a)
(2, 2e-19)

疑わしい場合は、BenDundee の提案に固執するDecimalか、使用してください。bigfloat

于 2013-01-29T15:17:52.210 に答える
0

別の便利なパッケージはmpmath次のとおりです。

import mpmath as mp
p.dps = 64       #64 decimal places
msqrt(3)/2
mpf('0.8660254037844386467637231707529361834714026269051903140279034897246')
p.dps = 30       #30 decimal places
mpf('0.866025403784438646763723170752918')
于 2014-05-22T15:07:02.653 に答える