You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何np.exp(1000)触发溢出警告,而np.exp(-100000)无下溢警告?

NumPy exp函数溢出警告与下溢无警告的原因分析

问题场景

执行以下代码时会触发溢出警告:

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

但执行下方代码却未出现下溢警告:

>>> np.exp(-100000)
0.0

核心原因

  • 默认警告策略差异:NumPy对溢出和下溢的默认警告逻辑不同。溢出会主动抛出RuntimeWarning,而下溢警告默认是被抑制的。这是因为下溢产生的0.0在多数数值计算场景中属于可接受的结果,不会像溢出得到的inf那样容易引发后续计算异常。

  • IEEE 754浮点数标准规范:根据IEEE 754标准,当计算结果小于浮点数能表示的最小正数值时,会被舍入为0.0,这个过程称为渐下溢,属于标准允许的常规行为,NumPy默认不对该情况发出警告;而溢出得到的inf是超出浮点数范围的异常值,因此会触发警告。

  • 可手动开启下溢警告:如果需要监控下溢情况,可以通过修改NumPy的警告配置来开启,示例如下:

>>> import numpy as np
>>> np.seterr(under='warn')  # 将下溢警告设置为开启
{'divide': 'warn', 'over': 'warn', 'under': 'ignore', 'invalid': 'warn'}
>>> np.exp(-100000)
<stdin>:1: RuntimeWarning: underflow encountered in exp
0.0

内容的提问来源于stack exchange,提问作者Atharva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 16:32:38