Попробуйте этот простой код
// Вызовите метод TextBoxDateFormat с датой в качестве параметра.
Способ
public void TextBoxDateFormat(string str1)
{
// Takes the current date format if MM/DD/YY or MM/DD/YYYY
DateTime dt = Convert.ToDateTime(str1);
//Converts the requested date into MM/DD/YYYY and assign it to textbox field
TextBox = String.Format("{0:MM/dd/yyyy}", dt.ToShortDateString());
//include your validation code if required
}
Хотя алгоритм суммы квадратов работает нормально большую часть времени, он может вызвать большие проблемы, если вы имеете дело с очень большими числами. По сути, вы можете получить отрицательную дисперсию ...
Кроме того, никогда, никогда и никогда не вычисляйте ^ 2 как pow (a, 2), a * a почти наверняка быстрее.
By Наилучшим способом вычисления стандартного отклонения является метод Велфорда . Мой C очень ржавый, но мог бы выглядеть примерно так:
public static double StandardDeviation(List<double> valueList)
{
double M = 0.0;
double S = 0.0;
int k = 1;
foreach (double value in valueList)
{
double tmpM = M;
M += (value - tmpM) / k;
S += (value - tmpM) * (value - M);
k++;
}
return Math.Sqrt(S / (k-2));
}
Если у вас есть вся совокупность (в отличие от выборки совокупности), то используйте return Math .Sqrt (S / (k-1));
.
EDIT: Я обновил код в соответствии с замечаниями Джейсона ...
EDIT: Я также обновил код согласно замечанию Алекса ...
Фрагмент кода:
public static double StandardDeviation(List<double> valueList)
{
if (valueList.Count < 2) return 0.0;
double sumOfSquares = 0.0;
double average = valueList.Average(); //.NET 3.0
foreach (double value in valueList)
{
sumOfSquares += Math.Pow((value - average), 2);
}
return Math.Sqrt(sumOfSquares / (valueList.Count - 1));
}
Вы можете избежать двух проходов по данным, накапливая среднее и среднеквадратичное
cnt = 0
mean = 0
meansqr = 0
loop over array
cnt++
mean += value
meansqr += value*value
mean /= cnt
meansqr /= cnt
и формируя
sigma = sqrt(meansqr - mean^2)
коэффициент cnt / (cnt-1)
также часто уместно.
Кстати - Первый проход по данным в Деми и McWafflestix ответы скрыты в вызовах Среднее
. Такие вещи, безусловно, тривиальны для небольшого списка, но если список превышает размер кеша или даже рабочего набора, это становится сделкой по ставке.