2016-07-01 35 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分,那么准确性(使用浮点算术)可能是一个问题。

相关问题