在 java 中,双精度 0.0 大于或小于 0



我想要求更多澄清。这是我的示例程序

double diff = 7.500 - 7.500;
System.out.println(diff); // result 0.0
if (diff > 0) {
    System.out.println("+" + diff ); //result +0.0
} else {
    System.out.println("-" + diff ); //result -0.0
}

我的结果是 -0.0。我的期望是 0 == 0.0,如果其他条件,则跳过。但它进入了 else 条件。双精度 0.0 是大于还是小于 0?

请注意,您正在检查 diff 是否> 0 - 因此,如果它为零,则正在打印 -0.0

在您的情况下,您使用(更大)>将 0.0 与 0 进行比较,因此 0.0 并不严格大于 0(它相等)。然后,您的程序转到else部分。

if(diff == 0 ) {
    System.out.println("+" + diff ); //result 0.0
} else if (diff > 0) {
    System.out.println("+" + diff ); //result +diff
} else { // diff is less than 0 
    System.out.println("-" + diff ); //result -diff
}
这是我

的答案:

double diff = 7.500 - 7.500;
    System.out.println(diff);
    if(diff>0){
        System.out.println("+"+diff);
    }else if(diff<0){
        System.out.println("-"+diff);
    }else if(diff==0){
        System.out.println("="+diff);
    }
}

我的结果是这样的:
0,0
=0.0

你必须忘记,0.0 等于 0 是

"否则 0.0> 0",否则是"0.0>= 0"

最新更新