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

为什么这段Java代码执行后输出结果为Positive Infinity?

Java代码输出Positive Infinity的原因
double d = 10.0 / -0; 

System.out.println(d);
if (d == Double.POSITIVE_INFINITY) 
    System.out.println("Positive Infinity");
else 
    System.out.println("Negative Infinity");

核心原因拆解:

  • Java的整数类型不存在正负零的区分,代码中的-0是int类型的字面量,它的实际值和普通正0完全一致,不存在整数层面的负零。
  • 做10.0 / -0运算时,左操作数是double类型,右操作数的int 0会自动类型提升为double类型的正0.0。
  • 按照IEEE 754浮点数运算标准,正数除以正的0.0得到的结果就是Double.POSITIVE_INFINITY(正无穷),所以最终判断分支会输出Positive Infinity。

补充验证:如果将代码中的-0修改为-0.0(double类型的负零字面量),运算结果就会变为负无穷,最终会输出Negative Infinity。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:57:02