In another Bruce Eckels exercise in calculating velocity, v = s / t
where s and t are integers. How do I make it so the division cranks out a float?
Try:
v = (float)s / (float)t;
Casting the ints to floats will allow floating-point division to take place.
You really only need to cast one, though.
Just cast one of the two operands to a float first.
v = (float)s / t;
The cast has higher precedence than the division, so happens before the division.
The other operand will be effectively automatically cast to a float by the compiler because the rules say that if either operand is of floating point type then the operation will be a floating point operation, even if the other operand is integral. Java Language Specification, §4.2.4 and §15.17
You can cast the numerator or the denominator to float...
int operations usually return int, so you have to change one of the operanding numbers.
You can cast even just one of them, but for consistency you may want to explicitly cast both so something like v = (float)s / (float)t should work.
To lessen the impact on code readabilty, I'd suggest:
v = 1d* s/t;
Cast one of the integers to a float to force the operation to be done with floating point math. Otherwise integer math is always preferred. So:
v = (float)s / t;