When your calculations are done with Ints then the result will also be an integer (unless there is a division which will return a Double result). So you need to explicitly set one of the numbers to Long.
Not exactly. The calculation will be done with Doubles. The result in this case will be correct however there might be cases where the result is inaccurate as not all long values can be represented accurately with a double.