在我开始之前,我花了很多时间去寻找答案。似乎最有参考价值的方法就是这里,http://www.developer.com/print.php/3794146。我不太懂如何优化。见下文。
public void CalculateStdDev()
{
arrayItemCount = 0; // integer
average = 0; // double
double itemsSum = 0;
double[] values = new double[DS.Tables[0].Rows.Count];
double[] deviations = new double[DS.Tables[0].Rows.Count];
double[] squareDeviations = new double[DS.Tables[0].Rows.Count];
double squareDeviationsSum = 0;
double squareDeviationsAverage = 0;
stdDeviation = 0; // double
for (int i = 0; i < DS.Tables[0].Rows.Count; i++)
{
if (DS.Tables[0].Rows[i].ItemArray.GetValue(1).ToString() != "")
{
values[arrayItemCount] = Convert.ToDouble(DS.Tables[0].Rows[i].ItemArray.GetValue(1));
itemsSum += Convert.ToDouble(DS.Tables[0].Rows[i].ItemArray.GetValue(1));
arrayItemCount += 1;
}
}
average = itemsSum / arrayItemCount;
for (int i = 0; i < arrayItemCount; i++)
{
deviations[i] = Math.Abs(values[i] - average);
squareDeviations[i] = deviations[i] * deviations[i];
squareDeviationsSum += squareDeviations[i];
}
squareDeviationsAverage = squareDeviationsSum / Convert.ToDouble(arrayItemCount - 1);
stdDeviation = Math.Round(Convert.ToDouble(Math.Sqrt(squareDeviationsAverage)), 3);
}发布于 2013-07-12 06:31:15
如果方法计算标准解算,它应该返回值,而不是分配全局变量或实例变量。
致以敬意,
https://codereview.stackexchange.com/questions/28379
复制相似问题