用于计算两个整数的平均值的函数

Boh*_*ohn -1 c#

我写了这个:

    public static decimal Average(int a, int b)
    {
        return (a + b) / 2;
    }

    public static void Main(string[] args)
    {
        Console.WriteLine(Average(2, 1));
        Console.ReadKey();
    }
Run Code Online (Sandbox Code Playgroud)

但它回来了1.但它应该返回1.5 如何修复它返回1.5?

小智 6

在Average函数上缺少类型转换

public static decimal Average(int a, int b)
{
    return (decimal)(a + b) / 2;
}

public static void Main(string[] args)
{
    Console.WriteLine(Average(2, 1));

}
Run Code Online (Sandbox Code Playgroud)

  • 这是对的,但要解释为什么它是正确的:在整数除法中,3/2是1.在浮点除法中,3/2是1.5.你的返回类型是十进制,它是一个浮点类型,但你的操作数都是整数,所以会发生的是它首先执行整数数学运算,产生1,然后转换为十进制.相反,您需要先将至少一个操作数转换为十进制,然后再进行除法. (4认同)