当前位置: 代码迷 >> C语言 >> 请教一个百思不得其解的问题!
  详细解决方案

请教一个百思不得其解的问题!

热度:230   发布时间:2006-10-16 20:26:58.0
请教一个百思不得其解的问题!

#include <stdio.h>

main()
{
float a;
for(a=0.0;a<=1.0;a+=0.1)
printf("%.1f\n",a);
}


为什么得不到1.0 ????

搜索更多相关的解决方案: 百思不得其解  

----------------解决方案--------------------------------------------------------
因为
for(a=0.0;a<=1.0;a+=0.1)
printf("%.1f\n",a);这个a还没有执行a+=0.1这步

----------------解决方案--------------------------------------------------------
因为浮点数的等与不等没意义


[此贴子已经被作者于2006-10-16 20:41:36编辑过]


----------------解决方案--------------------------------------------------------

楼上可以再解释清楚一点吗?不明白


----------------解决方案--------------------------------------------------------
以下是引用bestboy555在2006-10-16 20:35:03的发言:
因为
for(a=0.0;a<=1.0;a+=0.1)
printf("%.1f\n",a);这个a还没有执行a+=0.1这步

为什么不执行? 就算a<=1.0当a为0.9时 也是要先执行a+=0.1才判断a<=1.0


----------------解决方案--------------------------------------------------------
以下是引用xixigzcn在2006-10-16 20:26:58的发言:

#include <stdio.h>

main()
{
float a;
for(a=0.0;a<=1.0;a+=0.1)
printf("%.1f\n",a);
}


为什么得不到1.0 ????

浮点数没有真正意义上的相等,比如说0.0000001和0.00000011,计算机只会默认相等.这里会执行到1.0,但它相等是比较不出来的.
----------------解决方案--------------------------------------------------------
这些都是机器问题。
----------------解决方案--------------------------------------------------------

噢 明白了 谢谢


----------------解决方案--------------------------------------------------------

可以改为
#include <stdio.h>

main()
{
float a, sum;
for(a=0.0;a<=1.0;a+=0.1)
sum+=0.1;
printf("%.1f\n",sum);
return 0;
}


----------------解决方案--------------------------------------------------------

第 9 楼,会有问题
#include <stdio.h>

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


----------------解决方案--------------------------------------------------------
  相关解决方案