我已经编写了一个计算标准偏差的函数,结果始终是' 1.#QNAN0',我尝试过以不同的方式对其进行格式化,但我可以'找到解决方案。它昨天在另一台电脑上工作,我能做些什么吗?
void CalcStandardDeviation(int count, int* nums, double mean, FILE* output){
int k;
double std=0,a;
for (k=0; k<count; k++){
a=nums[k]-mean;
std=std+(a*a);
}
std/=(count);
std=sqrt(std);
fprintf(output,"Standard deviation: %f\r\n",std);
fprintf(output,"\r\n");
}
答案 0 :(得分:3)
NaN只能在您的代码中包含三个来源:
mean
是 NaN 。std/=(count);
如果count
0 。{/ li>
std=sqrt(std);
std
此时此count
为负数(在您的情况下似乎不可能)。您应调试代码并观看mean
和{{1}}值(或打印/导出)以找出原因。