使用舍入功能在Odoo10中仍将价格34.50舍入到34

时间:2018-10-06 10:13:23

标签: rounding odoo odoo-10 decimal-point

我使用的是浮动价格的整数值,但我的价格34.50仍四舍五入为34。达到34.50时应该为35。主要是它的工作正常,但我不明白为什么它不能在3000价格百分比折扣上工作,是1.15

我也在附加屏幕和代码。

@api.one
@api.depends('discount_type','discount_rate','amount_total')
def _compute_discount(self):

    mod_obj = self.env['ir.model.data']
    amount_discount = 0.0
    if self.discount_type == 'percent':
        amount_discount = self.amount_untaxed * self.discount_rate / 100
    else:
        amount_discount = self.discount_rate

    self.amount_discount = round(amount_discount)

enter image description here

预先感谢

2 个答案:

答案 0 :(得分:1)

您之所以有此结果,是因为在 python 1.15 * 3000 = 34.4999999 中, 34.4999的回合为34

答案 1 :(得分:0)

我找到了解决此问题的方法。这是由于python和实际上大多数编程语言中的浮点问题所致。

将3000 * 1.15 / 100.0放入python终端实际上​​会给您34.49999999999999,然后将其舍入为34。

因为它们是价格,所以您可以使用 round(round(round(amount_discount,2))将其四舍五入为34.50,然后四舍五入为35。通常,任何大于.495的内容都将四舍五入。 / p>