1

注意:我已经在使用 decimal.Decimal

当您需要以以下粗略样式输出时,执行计算并向最终用户显示计算的最佳方式是什么:

Item - £ 70.10 
Item - £  5.67
Item - £ 10.33

--------------
Total  £ 86.10

我小时候一直被教导数学不要在你的最终答案之前四舍五入,否则你会失去精确度,但在这种情况下,如果你不这样做,看起来我们有计算错误。因为显示背后的计算与用户根据显示给他们的数字所做的不同。

例如:

My app will be doing: 70.1034 + 5.6693 + 10.333333333 = 86.1060333 (86.11 2dp)

My end user will be doing as above: 70.10 + 5.67 + 10.33 = 86.10

因此我似乎是不正确的。克服这个问题的最佳方法是什么?(我的意思是一般,但 python 特定的方法也会有所帮助)

4

1 回答 1

3

使用该decimal模块来获得正确计算的数学。您可以设置它,以便每个值将自动使用两位小数。

>>> decimal.getcontext().prec = 2
>>> decimal.Decimal(1)/decimal.Decimal(3)
Decimal('0.33')

当您使用金钱时,在每个中间计算中丢失精度是正常的。

于 2012-10-17T16:31:38.770 回答