作者liaommx (Orz)
看板C_Sharp
標題[問題] 同樣數據,讓c#和excel算標準差
時間Wed Jun 17 00:28:51 2009
excel算
14.08530558
csharp算出來
14.227170173088554
這是正常嗎?_?
PS:excel只有小數8位
csharp double可以到小數下16位.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.187.142
1F:→ james732:你要不要說說你是算了什麼…? 06/17 01:32
2F:推 windsheep:check一下兩個算法是不是一樣..分母? 06/17 06:34
3F:→ Steven0422:公式有一樣嗎? 06/17 08:19
4F:→ liaommx:公式是一樣的,只是計算能力不同... 06/17 10:14
公式程式碼如下
我總共有97個資料,所以97是這樣來的.
public double StandardDeviation(double[] num)
{
double avg = Average(num);
double SumOfSqrs = 0.0;
foreach (double d in num)
{
SumOfSqrs += Math.Pow(d - avg, 2);
}
//return Math.Sqrt((SumOfSqrs / (num.Length)));
return Math.Sqrt((SumOfSqrs / (97)));
}
public double Average(double[] num)
{
double sum = 0.0;
foreach (double d in num)
{
sum += d;
}
//return sum / Convert.ToDouble(num.Length);
return sum / Convert.ToDouble(97);
}
※ 編輯: liaommx 來自: 120.125.83.171 (06/17 10:16)
5F:→ liaommx:PS:excel用的是stdev算標準差 06/17 10:30
6F:→ cjcat2266:Excel stdev使用的公式確定完全一樣嗎? 06/17 11:30
7F:推 hulapig:查了一下,Excel用的公式不一樣喔,stdev是除以n-1 06/18 09:15
8F:→ hulapig:stdevp才是除以N 06/18 09:15