我在一本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()?任何人都可以提供一个例子吗?
答案 0 :(得分:1)
我不认为使用十进制(和量化)的主要原因是速度:它的准确性。来自文档:
十进制数字可以准确表示。相反,像1.1和2.2这样的数字在二进制浮点中没有精确的表示。最终用户通常不希望1.1 + 2.2显示为3.3000000000000003,就像二进制浮点一样。
如果您正在处理大数字并且要求结果正确到1美分,那么准确性(使用浮点算术)可能是一个问题。