为什么 np.exp(1000) 给出溢出警告,而 np.exp(-100000) 不给出下溢警告?

问题描述 投票:0回答:1

跑步时:

>>> import numpy as np
>>> np.exp(1000)
<stdin>:1: RuntimeWarning: overflow encountered in exp

显示溢出警告。 但是为什么下面的代码没有给出下溢警告呢?

>>> np.exp(-100000)
0.0
python numpy precision
1个回答
0
投票

我相信这与如何处理溢出和下溢有关。在溢出中,计算机会丢弃最高有效位,直到它可以表示数字为止,与下溢相反,下溢会丢弃最低有效位。这会导致某些值出现“环绕”效果,返回可表示某些数据类型的任意位数所表示的最高值或最低值。

下溢有点棘手,因为它必须做更多的精度(它有多接近零),因此当计算机丢弃最低有效位时,它可能会产生错误的答案。

例如,如果您乘以 0.0004 x 0.0004,则结果 0.000016 将被截断为 0.000,这是不正确的。

一些快速阅读:https://www.eduative.io/answers/what-are-overflow-and-underflow

© www.soinside.com 2019 - 2024. All rights reserved.