Short version: Why don\'t I have to coerce 60, and int, into a double, so that I can use division with another double if I DO care about the fractional part?
Long ve
Here are the relevant division operators:
public static double operator /(double x, double y)
public static int operator /(int x, int y)
There is an implicit conversion from int
to double
, but not the other way round... so if you divide an int
by an int
, you'll use the integer form... but if either operand is a double, it will use the double form.
There's no need to make both operands double
- but your code would be at least shorter if you made the divisor operand a double instead of casting:
int durationInMinutes = (int) Math.Ceiling(durationInSeconds / 60.0);
Personally I find that easier to read... but it's a personal choice.
If you want to prove to your boss that it's really doing floating point division, use iladsm or reflector (in IL mode) on your code - it will show an ldc.r8
instruction for the constant, which means a double
value.