无法找到给定数字的总数和平均数 - 正确代码

时间:2014-02-28 23:13:41

标签: c# visual-studio-2012

我想创建一个循环,将4种费用加在一起,然后平均收费,以便客户知道他们的平均物品费用。即使我想创建一个声明来查找平均值。使用带有美元符号和两位小数的标签和格式编号显示平均值。

当我运行此代码时,我在total变量中只显示myCharges的最后一个值。我想要总数和平均数。 对于平均值,我需要帮助打印2位小数。

double[] myCharges = {12,13,14,15.55} ;
 double total = 0;
 for (int i = 0; i < myCharges.Length; i++)
 {
     total += myCharges[i];
 }
  Console.WriteLine("Total of MyCharges are {0:C}", total);
  Console.WriteLine("Average of MyCharges are {0:C}", myCharges.Average().ToString("0.00));
  Console.ReadKey();

4 个答案:

答案 0 :(得分:5)

您正在寻找Enumerable.Sum()

Console.WriteLine("Total of MyCharges are {0:C}", myCharges.Sum());

您的当前代码仅存储数组的最后一个值,因为total = myCharges[i];分配会忘记以前的值。您可以使用+=

进行修复
for (int i = 0; i < myCharges.Length; i++)
{
     total += myCharges[i];
}

答案 1 :(得分:1)

你的第6行应该是

total += myCharges[i];

当您想要求和时,使用just = 赋值。为清楚起见,+ =与说total = total + myCharges[i].

相同

至于2位小数,C(货币)格式字符串应该为您处理。如果您不希望将平均值格式化为货币,请尝试使用F2格式字符串,或其他任何一个:MSDN

答案 2 :(得分:1)

你正在覆盖每个循环的总值。你会想要这样做(注意+号):

total += myCharges[i];

或者你可以跳过循环并使用:

myCharges.Sum();

要获得2位小数,您可以执行此操作:

myCharges.Average().ToString("0.00");

答案 3 :(得分:0)

阿列克谢的答案是计算总和的更好方法。但是,要指出出于教育目的而出错的地方,您可以在代码中看到该行:

total = myCharges[i];

仅保留当前值。要修改它,请改为:

total += myCharges[i];

但实际上,使用内置功能更简单。