double_scalars 中遇到的溢出除了被零除还有哪些原因?

Jan*_*Jan 14 python numpy

我读过双标量,但只是部分理解。根据我的理解,这是Numpy可以计算的范围。这就是为什么这里的大多数问题都集中在除以零上(这是一个错误,因为答案将超出范围(无穷大))。

但我不确定我的理解是否正确。另外,我看不到有关RuntimeWarning:overflow在 double_scalars 中遇到的其他原因。什么会导致双标量中遇到溢出?

dev*_*tor 9

溢出错误意味着操作产生的值超出为相应数据类型定义的范围。对于 numpy double,该范围是(-1.79769313486e+308, 1.79769313486e+308). 另外,为了进行良好的讨论,请阅读这篇 SO post

例子:

import numpy as np
np.seterr(all='warn')
print "Range of numpy double:", np.finfo(np.double).min, np.finfo(np.double).max
A = np.array([143],dtype='double')
a=A[-1]
print "At the border:", a**a
B = np.array([144],dtype='double')
b=B[-1]
print "Blowing out of range:", b**b
Run Code Online (Sandbox Code Playgroud)

输出:

Range of numpy double: -1.79769313486e+308 1.79769313486e+308
At the border: 1.6332525973e+308 
Blowing out of range: inf
D:\anaconda\lib\site-packages\ipykernel\__main__.py:9: RuntimeWarning: overflow encountered in double_scalars
Run Code Online (Sandbox Code Playgroud)

  • 遇到调试时如何`raise Error`;遇到“某处”是没有帮助的。 (2认同)

小智 4

RuntimeWarning:Overflow 遇到的另一个非常常见的原因是浮点错误。欲了解更多信息,您可以查看这里

另外,这里还有一些浮点异常的定义。

浮点异常在 IEEE 754 标准1中定义:

除以零:从有限数得到无限结果。溢出:结果太大而无法表达。下溢:结果非常接近零,导致一些精度丢失。无效操作:结果不是可表达的数字,通常表明产生了 NaN。

我希望这有帮助,祝你好运。