先来看一下例子
#include<stdio.h>
int main(void)
{
float i;
float sum = 0;
for(i=1; i<=100; ++i)
{
sum += 1/i;
}
printf("sum = %f\n", sum);
return 0;
}
很多初学者都会这么写,从逻辑上时没有问题的,运行结果也是正确的,但是这样写不好,为什么?这牵扯到浮点数如何存储的问题,float 和 double 都不能精确的存储一个小数,这句话一定要记住。
#include<stdio.h>
int main()
{
float i = 5.4;
float j = 3.235;
printf("i = %.20f\n", i);
printf("j = %.20f\n", j);
return 0;
}
如果使用 %f 输出的话,那么不管是单精度还是双精度,小数部分只能输出6位
#include<stdio.h>
int main()
{
float i = 5.4;
float j = 3.235;
printf("i = %f\n", i