在 Python 中划分和乘以十进制对象



在下面的代码中,coeff1 和 coeff2 都是十进制对象。当我使用 type(coeff1( 检查它们的类型时,我得到(类'十进制。十进制'(,但是当我制作测试代码并检查十进制对象时,我得到十进制。十进制,不带单词类

coeff1 = system[i].normal_vector.coordinates[i]
coeff2 = system[m].normal_vector.coordinates[i]
x = coeff2/coeff1
print(type(x))
system.xrow_add_to_row(x,i,m)

另一个问题是当我将函数的第一个输入更改为负 x 时xrow_add_to_row:

system.xrow_add_to_row(-x,i,m)

我在更改的代码上方的一行收到无效的操作错误:

<ipython-input-11-ce84b250bafa> in compute_triangular_form(self)
93             coeff1 = system[i].normal_vector.coordinates[i]
94             coeff2 = system[m].normal_vector.coordinates[i]
---> 95             x = coeff2/coeff1
96             print(type(coeff1))
97             system.xrow_add_to_row(-x,i,m)
InvalidOperation: [<class 'decimal.DivisionUndefined'>]

但是在测试代码中,我在十进制对象中使用负数,并且工作正常。知道问题可能是什么吗?谢谢。

当您尝试将零除以零时会引发decimal.DivisionUndefined。这有点令人困惑,因为当只有除数为零时,您会得到不同的异常(decimal.DivisionByZero(

>>> import decimal.Decimal as D
>>> D(0) / D(0)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
D(0) / D(0)
decimal.InvalidOperation: [<class 'decimal.DivisionUndefined'>]
>>> D(1) / D(0)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
D(1) / D(0)
decimal.DivisionByZero: [<class 'decimal.DivisionByZero'>]

最新更新