我想要求更多澄清。这是我的示例程序
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"