Django 1.9.4在Python3上发生了以下问题

在我的Django项目中,要使用sale_amount计算折扣,我使用以下代码行

discount = round((sale_amount - tax_amount ) * discount_rate,2)


上述变量的值如下

sale_amount,tax_amount, discount_rate = 30.00, 6.75, 0.02000000


从Django模型对象获取的变量值都是相同的类型,即十进制。

根据上述代码行,在Django项目文件中计算得出的折扣为0.46

当我使用上述金额和公式计算折扣时,我在Django控制台中得到value: 0.47

我无法弄清楚为什么Django控制台和项目计算之间存在0.01差异。

最佳答案

(30-6.75)* 0.02的结果是0.465。因此,在四舍五入时,我们期望得到0.47。但这似乎是一种解释:round() documentation


  针对float的round()行为可能令人惊讶:例如,round(2.675,2)给出2.67,而不是预期的2.68。这不是错误:这是由于大多数小数部分不能完全表示为浮点数的结果。有关更多信息,请参见浮点算法:问题和限制。

关于python - Django计算中的0.01差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52623621/

10-13 00:20
查看更多