跑步时:
>>> import numpy as np
>>> np.exp(1000)
<stdin>:1: RuntimeWarning: overflow encountered in exp
显示溢出警告。 但是为什么下面的代码没有给出下溢警告呢?
>>> np.exp(-100000)
0.0
我相信这与如何处理溢出和下溢有关。在溢出中,计算机会丢弃最高有效位,直到它可以表示数字为止,与下溢相反,下溢会丢弃最低有效位。这会导致某些值出现“环绕”效果,返回可表示某些数据类型的任意位数所表示的最高值或最低值。
下溢有点棘手,因为它必须做更多的精度(它有多接近零),因此当计算机丢弃最低有效位时,它可能会产生错误的答案。
例如,如果您乘以 0.0004 x 0.0004,则结果 0.000016 将被截断为 0.000,这是不正确的。
一些快速阅读:https://www.eduative.io/answers/what-are-overflow-and-underflow