私は数え切れないほどの時間を調査、読み取り、テストに費やしてきましたが、最終的には Python の Decimal オブジェクトに最も基本的な概念である Decimal の出力を文字列にフォーマットするという概念が欠けていることに混乱し、がっかりしました。
次の値を持ついくつかの文字列または Decimal オブジェクトがあるとします。
0.0008
11.1111
222.2222
3333.3333
1234.5678
目標は、単純に Decimal の精度を小数点以下 2 桁に設定することです。たとえば、、およびとして11.1111
フォーマットされます。11.11
1234.5678
1234.57
次のようなコードを想定しています。
import decimal
decimals = [
decimal.Decimal('0.0008'),
decimal.Decimal('11.1111'),
decimal.Decimal('222.2222'),
decimal.Decimal('3333.3333'),
decimal.Decimal('1234.5678'),
]
for dec in decimals:
print dec.as_string(precision=2, rounding=ROUND_HALF_UP)
結果の出力は次のようになります。
0.00
11.11
222.22
3333.33
1234.57
明らかに、Decimal のコンテキストの精度を利用することはできません。これは、10 進数の精度だけでなく、TOTAL 桁数が考慮されるためです。
Decimal を float に変換してその値を出力することにも興味がありません。Decimal の背後にある完全な理由は、float での計算の保存と実行を避けるためです。
他にどのような解決策がありますか? スタック オーバーフローに関して他にも多くの同様の質問があることは理解していますが、問い合わせている根本的な問題を解決できるものはありません。
どうもありがとう!