以下代码似乎总是生成错误的结果.我在gcc和windows visual studio上测试过它.是因为浮动溢出还是其他什么?提前致谢:)
#include <stdio.h>
#define N 51200000
int main()
{
float f = 0.0f;
for(int i = 0; i < N; i++)
f += 1.0f;
fprintf(stdout, "%f\n", f);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Ign*_*ams 13
float只有23位的精度.512000000需要26.简单地说,你没有正确答案所需的精度.