我已經花了無數小時研究,閱讀,測試並最終困惑於Python的Decimal對象缺乏最基本概念的問題:將Decimal的輸出格式化爲字符串。將Python十進制對象格式化爲指定的精度
假設我們有一些字符串或者與下面的值對象十進制:
0.0008
11.1111
222.2222
3333.3333
1234.5678
我們的目標是簡單地將小數的精度設置爲小數點後第二位。例如,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
顯然,我們不能使用的十進制的上下文的精度,因爲這考慮了TOTAL數字的數量,而不僅僅是小數精度。
我也沒有興趣將Decimal轉換爲浮點數來輸出它的值。 Decimal背後的全部原因是爲了避免在浮點上存儲和運行計算。
還有哪些其他解決方案?我知道還有很多關於堆棧溢出的其他類似問題,但是我沒有發現它們可以解決我詢問的潛在問題。
非常感謝!
有沒有內置的十進制接口來處理輸出格式或小數精度? – 2013-02-25 21:06:37
@JoshuaBurns:這是用於輸出格式的內置接口。 – 2013-02-25 21:08:03
肯定回答我的問題,非常感謝!我最擔心的是格式()在執行實際格式之前將值轉換爲浮點數。 – 2013-02-25 21:13:09