For this code block:
int num = 5; int denom = 7; double d = num / denom;
the value of
0.0. It can be forced to work by casting:
double d = ((double) num) / denom;
But is there another way to get the correct
double result? I don’t like casting primitives, who knows what may happen.
double num = 5;
Widening primitive conversions do not lose information about the overall magnitude of a numeric value.
Conversion of an int or a long value to float, or of a long value to double, may result in loss of precision-that is, the result may lose some of the least significant bits of the value. In this case, the resulting floating-point value will be a correctly rounded version of the integer value, using IEEE 754 round-to-nearest mode (§4.2.4).
5 can be expressed exactly as a double.