c - 1.#QNAN0计算标准差C时输出

标签 c nan

我写了一个计算标准差的函数,结果总是'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); 中,如果 count0
  • std=sqrt(std); 如果此时 std 是一个负数(在你的情况下似乎不可能)。

您应该调试您的代码并观察 countmean 值(或打印/导出它)以找到原因。

关于c - 1.#QNAN0计算标准差C时输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29210975/

相关文章:

matlab - ismember 不为 NaN 工作

c - 如何清理 SIGINT 处理程序中的本地数据

python - Nan 的单元测试检查

c++ - 除以非零值仍然可以创建一个南/无穷大

我可以在 Linux 中使用 winnt.h 吗?

python - 根据另一列中的值有条件地填充 pandas 中的空值

c - 读取 fscanf 上的空间

c - 带有 __va_args__ 和括号的宏错误

c - protected 内存区域上的 write() 不会触发 sigsegv,但标准访问会触发