0

Python の任意精度の 10 進数は素敵ですが、きれいにフォーマットされた方法で出力する方法が見つからないようです。たとえば、次の式を計算するとします。

>>> pow(2,70) -2
1180591620717411303422L

本来あるべきように、それは 2 で終わります。ただし、小数点以下 2 桁を表示するように書式設定しようとすると、浮動小数点数はあまり正確ではないため、2^70 に丸められます。

>>> print "{0:.2f}".format(pow(2,70) -2)
1180591620717411303424.00

精度を落とさずに希望するフォーマットで印刷する方法はありますか?
(NumPy などの非標準モジュールを使用せずに)

4

1 に答える 1

6

これは私のために働く:

>>> import decimal
>>> '{0:.2f}'.format(decimal.Decimal((pow(2,70)-2)))
1180591620717411303422.00

decimalモジュールのドキュメントから:

decimal モジュールは、10 進浮動小数点演算のサポートを提供します。[...] 10 進数は正確に表すことができます。

于 2012-01-07T23:10:40.860 に答える