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

为何0.0与±Inf相乘得NaN,其他有限数与±Inf相乘得±Inf?

为什么0.0与±Inf相乘得NaN,非零有限数与±Inf相乘得±Inf?

这是由IEEE 754浮点运算标准规定的,绝大多数现代编程语言(包括C++)都遵循这一标准,背后的逻辑是数学上的合理性:

  • 对于非零有限数和±Inf的乘法:
    逻辑上,一个非零的有限数值乘以无限大的数,结果必然还是无限大,符号由两个操作数的符号共同决定(比如负数×正无穷得到负无穷),这符合直观的数学推导。

  • 对于0和±Inf的乘法:
    这属于数学上的未定式——你无法通过极限确定唯一结果:
    比如当x趋近于0、y趋近于正无穷时,x*y可能趋近于1(x=1/y)、2(x=2/y),也可能趋近于0或无穷大。因为没有确定的结果,IEEE 754标准规定这种运算的结果为NaN(Not a Number),用来表示“无法确定的数值”。

验证代码

#include <iostream>
#include <limits>

using namespace std;

int main()
{
    constexpr double INF = numeric_limits<double>::infinity();
    cout << 0.0 * INF << endl;
    cout << -5.0 * INF << endl;
}

程序输出

-nan(ind)
-inf

内容的提问来源于stack exchange,提问作者Edison von Myosotis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:03:12