我写了一个计算标准差的函数,结果总是'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");
}
最佳答案
A NaN您的代码中只能有三个来源:
mean
是一个 NaN。- 在
std/=(count);
中,如果count
为 0。 - 在
std=sqrt(std);
如果此时std
是一个负数(在你的情况下似乎不可能)。
您应该调试您的代码并观察 count
和 mean
值(或打印/导出它)以找到原因。
关于c - 1.#QNAN0计算标准差C时输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29210975/