2016-07-01 71 views
0

我在Python書上看到說,在金融世界裏,有時它會更好使用量化()和十進制模塊四捨五入浮點數。一個例子在書中下面給出,考慮到我們有round()函數,爲什麼要量化()一個浮點數?

from decimal import Decimal 
price = Decimal('19.99') 
tax = Decimal('0.06') 
total = price + (price * tax) 
penny = Decimal('0.01') 
total.quantize(penny) 

但是,爲什麼不

round(19.99+19.99*0.06,2) 

何時量化()優於大輪()中的數值精度方面?任何人都可以舉個例子嗎?

+1

[總是](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –

回答

0

我不認爲使用十進制的主要原因(和量化)是速度:它的準確性。從文檔:

十進制數可以被精確地表示。相比之下,像1.1和2.2這樣的數字在二進制浮點中沒有精確的表示。最終用戶通常不會認爲1.1 + 2.2顯示爲3.3000000000000003,因爲它使用二進制浮點。

如果您處理的是大數字,並且您要求結果正確到1分,那麼準確性(使用浮點算術)可能是一個問題。

相關問題