c语言的这个问题如何解释?(win tc的)

来源:百度知道 编辑:UC知道 时间:2024/05/26 17:56:47
main()
{
float a,sum=0;
for(a=0.1;a<=1.0;a=a+0.1)
{
sum=sum+a;
}
printf("%f",sum);
getch();
}

结果是4.5
而答案是5.5
如何解释???
大哥们啊,你们先复制一下试试
可它真不是 我都试了N遍了
救救我吧!!!

精度问题

#include "stdio.h"
#include "conio.h"

int main()
{
float a,sum=0;
for(a=0.1;a<=1.0;a=a+0.1)
{
sum=sum+a;
printf("sum=%f %10.7f \n",sum, a);
}
printf("%f",sum);
getch();
}

运行看一下 显示的 a的值就明白了

把 a 的类型 改为 double 就行了

#include "stdio.h"
#include "conio.h"

int main()
{
double a;
float sum=0;
for(a=0.1;a<=1.0;a=a+0.1)
{
sum=sum+a;
}
printf("%f",sum);
getch();
}

从0.1加到1.0,应该就是5.5吧~