查看python3.4.1文檔,發現對於decimal模塊的講解非常多,由此可見其功能也很強大(下面算是把我認為比較重要的半翻譯半學習吧~)。文檔關於decimal模塊的總解釋是Decimal fixed point and floating point arithmetic,我理解的是固定小數點和浮點運算。頭加上from decimal import * 即可調用decimal模塊中的內容。
1. Decimal類型的優點
Decimal類型是在浮點類型的基礎上設計的,但是它在幾個地方上要優於floating point:
1)Decimal類型可以非常精確地在計算機中存儲,而學過c++的都知道,浮點型在計算機中是無法精確存儲的,比如1.1和2.2在計算機中存儲后,運算(1.1+2.2)表達式的值結果會是3.3000000000000003;Decimal類型則不會出現這種情況。同樣,由於無法精確存儲,浮點型也就無法精確計算(相對於Decimal類型),可以再測試(0.1+0.1+0.1-0.3)兩種類型的計算結果。
2)Decimal類型會自動保留小數點后面不需要的0,以與輸入的精度相匹配,比如下面小程序中的例子:浮點型的1.20+1.30結果是2.5;而Decimal類型結果是2.50,這樣貌似比較人性化。
3)Decimal類型可以根據需要自己設置小數點后精度。通過getcontext().prec = x (x為你想要的精度來設置,getcontext()函數下面再詳細介紹)。
4)Decimal類型有很強的管理功能,它能夠根據需要設置,來控制輸出的格式,得到或者忽略某類錯誤(如除0,可以設置忽略它,而得到一個Infinity的Decimal值)