在下面的代码中,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'>]