Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法找到给定数字的总数和平均值-正确的代码_C#_Visual Studio 2012 - Fatal编程技术网

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

C# 无法找到给定数字的总数和平均值-正确的代码,c#,visual-studio-2012,C#,Visual Studio 2012,我想创建一个循环,将4项费用相加,然后平均费用,以便客户知道他们的平均项目费用。甚至我想创建一个语句来找到平均值。显示带有标签的平均值,格式数字带有美元符号和小数点后两位 在total变量中运行此代码时,仅显示myCharges中的最后一个值。我要总数和平均数。 对于平均值,我需要帮助打印小数点后2位 double[] myCharges = {12,13,14,15.55} ; double total = 0; for (int i = 0; i < myCharges.Lengt

我想创建一个循环,将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();
double[]myCharges={12,13,14,15.55};
双倍合计=0;
对于(int i=0;i
您正在寻找:

您当前的代码只存储数组的最后一个值,因为
total=myCharges[i];
赋值会忘记以前的值。您可以使用
+=
来修复它:

for (int i = 0; i < myCharges.Length; i++)
{
     total += myCharges[i];
}
for(int i=0;i
您的第六行应该是

total += myCharges[i];
使用just=进行赋值求和。为了清楚起见,+=等于说
total=total+myCharges[i]。


小数点后2位为C(货币)格式化字符串应该为您解决。如果您不希望将平均值格式化为货币,请尝试F2格式字符串,或在以下位置使用其他格式字符串:

Alexei的答案是计算总和的更好方法。但是,为了教育目的,要指出错误所在,您可以在代码中看到以下行:

total = myCharges[i];
仅保存当前值。若要修复该值,请将其改为:

total += myCharges[i];

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

您正在覆盖每个循环的total值。您需要这样做(注意+号):

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

myCharges.Sum();
要获得小数点后2位,可以执行以下操作:

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

这同样有效,并且比OPs代码中的for循环更难搞乱。他使用的货币字符串也将保留两位小数,就像使用“F2”表示非货币格式字符串一样。啊,好的。我通常不会这样设置字符串的格式:)我相信F2等于“0.00”(如果数字小于0,可能没有前导0),尝试将“F2”改为“0.00”,看看会发生什么。在执行String.format(顺便说一句,这是Console.Writeline实际调用的)时,格式字符串也更为“正常”。我必须使用for循环,并且假设total是在循环内计算的。total+=myCharges[I]工作得非常好myCharges.Averges().ToString(“0.00)工作得非常好
myCharges.Sum();
myCharges.Average().ToString("0.00");