For this code block:
int num = 5;
int denom = 7;
double d = num / denom;
the value of d is 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.
That avoids a cast. But you’ll find that the cast conversions are well-defined. You don’t have to guess, just check the JLS. int to double is a widening conversion. From §5.1.2:
5 can be expressed exactly as a double.