Odoo ZeroDivisionError:浮点除零

时间:2017-05-04 11:23:27

标签: python python-2.7 openerp odoo-10

我正在使用Odoo 10,我正在尝试计算一个字段。计算实际上有效,但我在Odoo中出现错误,必须单击“确定”才能继续。点击“确定”后,错误就是

self.boxes = (self.squaremtr or 0.0) / (self.squarebox or 0.0)
ZeroDivisionError: float division by zero

下面是我在python中的代码

@api.onchange('squaremtr')
    def _onchange_boxes(self):
        self.boxes = (self.squaremtr or 0.0) / (self.squarebox or 0.0)

3 个答案:

答案 0 :(得分:0)

你不能除以零(https://en.wikipedia.org/wiki/Division_by_zero),它没有数学意义。这也意味着您无法执行(self.squarebox or 0.0)

您必须检查self.squarebox是否为有效数字并以合理的方式处理它。

答案 1 :(得分:0)

如果它被除零,我们应该采取一些测试用例来处理devision。

尝试使用以下代码:

@api.onchange('squaremtr')
    def _onchange_boxes(self):
        if self.squaremtr and self.squarebox:
            self.boxes = self.squaremtr / self.squarebox
        elif self.squaremtr:
            self.boxes = self.squaremtr
        elif self.squarebox:
            self.boxes = self.squarebox
        else:
            self.boxes = 0.0

答案 2 :(得分:0)

简单的解决方案是:

@api.onchange('squaremtr')
def _onchange_boxes(self):
    if self.squaremtr != 0 and self.squarebox != 0:
        self.boxes = self.squaremtr / self.squarebox
    else:
        self.boxes = 0.0