0

Python 3 を使用してpiの値を非常に正確に計算します。

>>> from decimal import *

>>> getcontext().prec = 100000

>>> Decimal(10005).sqrt()

100,000 桁まで正確に 10005 のルートの値を取得しました。しかし、次を使用してこれに 426880 を掛けようとすると、

>>> from decimal import *

>>> getcontext().prec = 1000000

>>> Decimal(426880) * Decimal(x)

x は 100,000 桁まで正確に計算された 10005 の根であり、指定された精度ではなく 28 桁の数値しか得られません。これらの値を正確に乗算するにはどうすればよいですか?

4

2 に答える 2

0

あなたの問題は、 x を文字列に保存して再解釈するか、以前の計算から x を a として持っていて、を実行していることだDecimalと思いますDecimal(A_Decimal)。x が既に 10 進数である場合は、再解釈しないでください。時間を節約する場合は、pickleまたはcpickleオブジェクトとして保存することをお勧めします。ところで、回避しようimport *- 名前空間を使用してください。

ところで、どこからでも x をインポートする前に、必ず現在の精度を設定してください!

于 2013-07-14T07:00:00.930 に答える
-1

問題は、あなたがそうするときだと思います

 >>> Decimal(426880) * Decimal(x)

Python によって次のように解釈されます。

>>> Decimal(426880) * Decimal(float(x))

最初に を宣言するときは、それがing ポイント番号ではなくxとして宣言されていることを確認してください。私はひどく間違っているかもしれませんが、コードをチェックして、それを行ったかどうかを確認する必要があると思います.Decimalfloat

于 2015-01-03T20:43:31.840 に答える