Odoo Zero DivisionError:浮点除以z

2024-06-28 19:24:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是奥多10,我在计算一个场。计算实际上是可行的,但是我在Odoo中得到了一个错误,必须单击OK继续。单击“确定”后,错误为

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

下面是我用python编写的代码

^{pr2}$

Tags: or代码odooselfby错误okfloat
3条回答

简单的解决方案是:

@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

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

你得检查一下self.squarebox公司是一个有效的数字,并以某种合理的方式处理它。在

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

尝试使用以下代码:

@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

相关问题 更多 >