0

I would like to ask for more clarification. Here my sample program

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
}

My result is -0.0. My expectation is 0 == 0.0 then skip if else condition. But it enter to the else condition.Is double 0.0 is greater or less than 0?

Sai Ye Yan Naing Aye
  • 6,622
  • 12
  • 47
  • 65

3 Answers3

10

Note that you are checking if diff > 0 - so if it IS zero, you are printing -0.0

lostbard
  • 5,065
  • 1
  • 15
  • 17
4

In your case, you compare 0.0 to 0 using (greater) > so 0.0 is not strictly greater than 0, (it is equal). Then your programme go to the else section.

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
}
sonique
  • 4,539
  • 2
  • 30
  • 39
2

this is my answer:

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);
    }
}

and my result is this :
0.0
=0.0

you must forget that the 0.0 equal 0 is 'else the 0.0 > 0' other the '0.0 >= 0'

Timi
  • 892
  • 1
  • 8
  • 17