数组值不能生成双精度值

Jav*_*on 4 c#

我的代码中存在问题,即使我将其指定为双精度数据类型,平均值也是整数。可能是什么问题呢?

using System;
using static System.Console;
using System.Linq;
class TemperaturesComparison
{
   static void Main()
   {
     int[] temp = new int[5];
     int i = 0;
     while (i < 5)
     {
       int eachTemp = int.Parse(ReadLine());
       if (eachTemp < -30 || eachTemp > 130) continue; //skips 
       temp[i] = eachTemp;
       i++;
     }
     
     if (temp[0] < temp[1] && temp[1] < temp[2] && temp[2] < temp[3] && temp[3] < temp[4]) WriteLine("Getting warmer");
     else if (temp[0] > temp[1] && temp[1] > temp[2] && temp[2] > temp[3] && temp[3] > temp[4]) WriteLine("Getting cooler");
     else WriteLine("It's a mixed bag");
     
     foreach(int number in temp)
     {
     Console.Write(number + " ");
     }
     double average = temp.Sum()/5;
     WriteLine("");
     WriteLine(average);
     
   }
}
Run Code Online (Sandbox Code Playgroud)

例如我输入:88 99 78 86 77

平均分是 85,而不是 85.6

Gur*_*ron 5

数字在执行double整数除法(请参阅文档)之后转换为(因此除法结果不会有小数部分),您需要将参数之一转换为double除法之前:

double average = (double)temp.Sum()/5;
Run Code Online (Sandbox Code Playgroud)

或者只是将除数更改为5.0(这将成为类型double

double average = temp.Sum()/5.0;
Run Code Online (Sandbox Code Playgroud)

另请注意,您可以只使用 LINQ Average,其返回类型为 ,double用于接受可枚举的重载int

var average = temp.Average();
Run Code Online (Sandbox Code Playgroud)