tags:

views:

356

answers:

5

Here's an example:

Double d = (1/3);
System.out.println(d);

This returns 0, not 0.33333... as it should.

Does anyone know?

+17  A: 

That's because 1 and 3 are treated as integers when you don't specify otherwise, so 1/3 evaluates to the integer 0 which is then cast to the double 0. To fix it, try (1.0/3), or maybe 1D/3 to explicitly state that you're dealing with double values.

Firas Assaad
A: 

Wow, thank you!

But how about if i have:

double d = (height/imageHeight)*imageWidth;

What would I use on that? Double.valueOf() or something else?

oletk
Then just use a simple cast of one of the variables in the division:double d = ((double)height/imageHeight)*imageWidth;
tvanfosson
Please add additional comments and questions as comments to the related answer and not as a separate answer to you question.
chriscena
Try double d = height*imageWidth/imageHeight;
recursive
+2  A: 

If you have ints that you want to divide using floating-point division, you'll have to cast the int to a double:

double d = (double)intValue1 / (double)intValue2

(Actually, only casting intValue2 should be enough to have the intValue1 be casted to double automatically, I believe.)

coobird
A: 

And thank you too! Problem solved :)

oletk
+1  A: 

Use double and not Double unless you need to use these values in the object sense. Be aware about the Autoboxing concepts

Vijay Dev