Why Does 1 / 2 == 0 Using Double? [Duplicate]

Why Does 1 / 2 == 0 Using Double? [Duplicate]

I'm a high school student currently getting ready for a state academic meet(UIL). I have a problem and I've looked everywhere and can't seem to find an answer! Why does this print out 0.0?

double d = 1/2;
System.out.println(d);
0

4 Answers

It's because of the data type.

When you do 1/2 that is integer division because two operands are integers, hence it resolves to zero (0.5 rounded down to zero).

If you convert any one of them to double, you'll get a double result.

double d = 1d/2;

or

double d = 1/2.0;
0

1 and 2 are both integers, so 1 / 2 == 0. The result doesn't get converted to double until it's assigned to the variable, but by then it's too late. If you want to do float division, do 1.0 / 2.

It's because 1 and 2 are int values, so as per the java language spec, the result of an arithmetic operation on int operands is also int. Any non-whole number part of the result is discarded - ie the decimal part is truncated, 0.5 -> 0

There is an automatic widening cast from int to double when the value is assigned to d, but cast is done on the int result, which is a whole number 0.

If "fix" the problem, make one of the operands double by adding a "d" to the numeric literal:

double d = 1d/2;
System.out.println(d); // "0.5"

As per the language spec, when one of the operands of an arithmetic operation is double, the result is also double.

Cause result of 1/2 = 0 and then result is parsing to double. You're using int instead of double. I think it should be ok:

double d = 1/2.0;
System.out.println(d);

Sorry for weak english

Sarah Jenkins
Author

Sarah Jenkins

Sarah Jenkins is a veteran tech journalist with over 12 years of experience covering artificial intelligence, mobile innovations, and digital ethics. Her insights have appeared in leading technology publications worldwide.