考虑到我们有round()函数,为什么还要量化()一个浮点数呢?

时间:2016-07-01 05:08:00

标签: python floating-point decimal

我在一本Python书中读到,在金融世界中,有时候使用quantze()和decimal模块来更好地计算浮点数。下面的书中给出了一个例子,

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)

在数值精度方面,quantze()何时胜过round()?任何人都可以提供一个例子吗?

1 个答案:

答案 0 :(得分:1)

我不认为使用十进制(和量化)的主要原因是速度:它的准确性。来自文档:

  

十进制数字可以准确表示。相反,像1.1和2.2这样的数字在二进制浮点中没有精确的表示。最终用户通常不希望1.1 + 2.2显示为3.3000000000000003,就像二进制浮点一样。

如果您正在处理大数字并且要求结果正确到1美分,那么准确性(使用浮点算术)可能是一个问题。