Here's an example:
Double d = (1/3);
System.out.println(d);
This returns 0, not 0.33333... as it should.
Does anyone know?
The default value of a numerical data type is 0, so yes. There is positive and negative zero and x == 0 tests for both and will never give you an exception or error.
The doubleValue() method returns the double value represented by this object.
Using the valueOf() method Similarly, the valueOf() method of the Double class (also) accepts a String value as a parameter, trims the excess spaces and returns the double value represented by the string. If the value given is not parsable to double this method throws a NumberFormatException.
If you have int
s 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.)
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With