Why does (360 / 24) / 60 = 0 ... in Java

Ankur picture Ankur · Mar 19, 2010 · Viewed 8.4k times · Source

I am trying to compute (360 / 24) / 60 I keep getting the answer 0.0 when I should get 0.25

In words: I want to divide 360 by 24 and then divide the result by 60

public class Divide {

    public static void main(String[] args){
      float div = ((360 / 24) / 60);
      System.out.println(div);

    }
}

This prints out:

0.0

Why is that? Am I doing something really stupid, or is there a good reason for this

Answer

Jon Skeet picture Jon Skeet · Mar 19, 2010

None of the operands in the arithmetic is a float - so it's all being done with integer arithmetic and then converted to a float. If you change the type of an appropriate operand to a float, it'll work fine:

float div = ((360 / 24f) / 60); // div is now 0.25

Note that if you changed just 60 to be a float, you'd end up with the 360 / 24 being performed as integer arithmetic - which is fine in this particular case, but doesn't represent what I suspect you really intended. Basically you need to make sure that arithmetic operation is being performed in the way that you want.