Ints and Doubles doing division

后端 未结 5 1866
挽巷
挽巷 2021-01-19 21:33

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

5条回答
  •  臣服心动
    2021-01-19 21:57

    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.

提交回复
热议问题