为什么这段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
相关产品推荐
相关产品推荐

