C# 函数计算两个整数的平均值

C# 函数计算两个整数的平均值,c#,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(); } 但它返回1。但是它应该返回1.5 如何将其修复为返回1.5 平

我写道:

    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();
    }
但它返回
1
。但是它应该返回
1.5

如何将其修复为返回1.5

平均函数上缺少类型转换

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

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

}

平均函数上缺少类型转换

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

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

}

它返回1,因为整数没有小数点,因此答案被截断。如果结果是1.99,结果将是1,例如地板(结果)

如果需要小数点,则需要使用浮点或将整数转换为浮点。如果您需要更高的精度,可以使用双精度浮点(double)

<> P>其他一些要考虑的是有一些图书馆会为你这样做。例如List.Average(),它将对多个变量求平均值

编辑:有关特定于部门的更详细答案,请参见此问题


它返回1,因为整数没有小数点,因此答案被截断。如果结果是1.99,结果将是1,例如地板(结果)

如果需要小数点,则需要使用浮点或将整数转换为浮点。如果您需要更高的精度,可以使用双精度浮点(double)

<> P>其他一些要考虑的是有一些图书馆会为你这样做。例如List.Average(),它将对多个变量求平均值

编辑:有关特定于部门的更详细答案,请参见此问题


因为您使用INT,为什么不使用一致的数字类型呢。使用
公共静态十进制平均值(十进制a、十进制b)
。并用
Average(2m,1m)
来调用它,因为您使用int,为什么不使用一致的数字类型呢。使用
公共静态十进制平均值(十进制a、十进制b)
。用
Average(2m,1m)
这是正确的,但要解释为什么它是正确的:在整数除法中,3/2是1。在浮点除法中,3/2是1.5。您的返回类型是十进制,这是一种浮点类型,但您的操作数都是整数,因此它首先执行整数数学,生成1,然后转换为十进制。相反,您需要先将至少一个操作数转换为十进制,然后再进行除法运算。return(decimal)(a+b)/2;应为返回(浮动)(a+b)/2;这是正确的,但要解释为什么它是正确的:在整数除法中,3/2是1。在浮点除法中,3/2是1.5。您的返回类型是十进制,这是一种浮点类型,但您的操作数都是整数,因此它首先执行整数数学,生成1,然后转换为十进制。相反,您需要先将至少一个操作数转换为十进制,然后再进行除法运算。return(decimal)(a+b)/2;应为返回(浮动)(a+b)/2;