#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编辑过]
----------------解决方案--------------------------------------------------------
楼上可以再解释清楚一点吗?不明白
----------------解决方案--------------------------------------------------------
因为
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
----------------解决方案--------------------------------------------------------
#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;
}
----------------解决方案--------------------------------------------------------