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

Java中为何两个NaN使用>=比较返回true?与JLS规定不符

问题解答:为什么f>=h返回true?

你代码里的3/0.0d和2/0.0d根本不是NaN,而是正无穷大(Positive Infinity),这就是和你预期不符的核心原因。

  • 在Java中,正数除以0.0的结果是Double.POSITIVE_INFINITY,只有像0.0/0.0d、Math.sqrt(-1)、Double.POSITIVE_INFINITY - Double.POSITIVE_INFINITY这类运算才会产生NaN。
  • 当两个正无穷大的值用>=比较时,结果为true——因为正无穷大等于正无穷大,自然满足“大于等于”的条件。
  • 如果你想验证JLS关于NaN的规则,把代码改成这样试试:
    double f = 0.0/0.0d;
    double h = 0.0/0.0d;
          
    System.out.println((f>=h)); // 此时会输出false
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:54:51