How to make the division of 2 ints produce a float instead of another int?
Solution 1:
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
Solution 2:
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.
Solution 3:
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;
Solution 4:
To lessen the impact on code readabilty, I'd suggest:
v = 1d* s/t;