我的代码中存在问题,即使我将其指定为双精度数据类型,平均值也是整数。可能是什么问题呢?
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
数字在执行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)
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |