Saturday, February 19, 2011

Double value returns 0.

Here's an example:

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

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

Does anyone know?

From stackoverflow
  • 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.

  • 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?

    tvanfosson : Then just use a simple cast of one of the variables in the division: double d = ((double)height/imageHeight)*imageWidth;
    chriscena : Please add additional comments and questions as comments to the related answer and not as a separate answer to you question.
    recursive : Try double d = height*imageWidth/imageHeight;
  • 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.)

  • And thank you too! Problem solved :)

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

0 comments:

Post a Comment