我想创建一个循环,将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();
答案 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];
但实际上,使用内置功能更简单。