M.G*_*Gad 0 python computer-science floating-accuracy
在下面的代码中,coeff1 和 coeff2 都是 Decimal 对象。当我使用类型(coeff1)检查它们的类型时,我得到(类'decimal.Decimal')但是当我制作测试代码并检查十进制对象时,我得到十进制。十进制,没有类这个词
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)
Run Code Online (Sandbox Code Playgroud)
另一个问题是当我将函数 xrow_add_to_row 的第一个输入更改为负 x 时:
system.xrow_add_to_row(-x,i,m)
Run Code Online (Sandbox Code Playgroud)
我在更改后的代码上方的一行中收到无效操作错误:
<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'>]
Run Code Online (Sandbox Code Playgroud)
但又在测试代码中,我使用负数和 Decimal 对象,它工作正常。知道可能是什么问题吗?谢谢。
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'>]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |