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

为何double.MaxValue加5不返回无穷大,两个double.MaxValue相加却返回无穷大

两个运算结果不同的核心原因:IEEE 754 双精度浮点数的精度规则与溢出判定逻辑

你用到的double类型完全遵循IEEE 754双精度浮点数标准,两个运算的差异来自该标准的两个核心特性:

  • 浮点数采用相对精度设计,而非绝对精度
    双精度浮点数仅保留53位二进制有效位,对应约16位十进制有效数字,数值越大,相邻两个可表示的浮点数的间隔(专业术语叫ULP,最小精度单位)就越大。

    double.MaxValue的数值约为1.7976931348623157E+308,在这个量级下,两个相邻可表示的double值的间隔已经远大于5。执行double.MaxValue + 5运算时,增量5太小不足以让数值跳到下一个可表示的浮点数区间,会按照默认舍入规则直接保留为double.MaxValue,没有达到溢出阈值,因此不会返回无穷大。

  • 只有运算结果超出双精度浮点数可表示的最大有限值范围时,才会触发正溢出返回正无穷

    两个double.MaxValue相加的结果约为3.59E+308,已经远大于双精度浮点数能承载的最大有限值,满足溢出判定条件,因此按照IEEE 754标准规则直接返回正无穷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:39:02