Decimal
を使用して私のプログラムで精度の問題が発生しました。精度が1の累乗に引き上げられたときの精度が失われる
シンプルREPRO:
from decimal import Decimal
print Decimal(1910944005427272400562113336049664)
print Decimal(1910944005427272400562113336049664)**1
print int(Decimal(1910944005427272400562113336049664)**1)
は与える:
1910944005427272400562113336049664
1.910944005427272400562113336E+33
1910944005427272400562113336000000
あなたが見ることができるように、元の値が(正確にはマイナス49664)わずかに小さくなっています。
私の実際のコードは、1の累乗で数値を上げる以外にも、正確さが低下します。
私が利用できる「良いDecimal
」はありますか?
私の入力と出力は、0以上2^256以下です。
整数演算のみを使用していますか? – Phylogenesis
@Phylogenesis:いいえ、それはタグに記載されていますが、質問自体の中でおそらく強調しておきたいはずです。ところで、もし私が整数算術だけを使っていたのであれば、Pythonは256ビットの整数算術をサポートしているので、まずは「Decimal」は必要ありません。 – goodvibration