一个关于浮点数的c语言程序

#include<stdio.h>
int main()
{
double i;
for(i=0;i!=10;i+=0.1)
printf("%.1lf\n",i);
return 0;
}
这个程序会输出什么结果?
为什么?

死循环

另外,比较两个浮点型数据是否相等,一般采用判断两数差的绝对是是否小于一个相当小的数
例fabs(a-b)<1e-6追问

1e-6是什么意思?
而且上面fabs(i-10)>1e-2是说大于。

追答

他那是用在循环里,就是满足fabs(i-10)>1e-2时,进行循环,也就是当fabs(i-10)<=1e-2时,循环结束
我这个是用在判断里,本质是差不多的

1e-6,就还是1*10^6,也就是0.000001

追问

只有c语言有这个问题吗?
C语言数据的封装性有缺陷就是指这些问题吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-27
#include<stdio.h>
int main()
{
double i;
for(i=0; i - 10 < 0.001; i += 0.1)
printf("%.1lf\n",i);
return 0;
}
第2个回答  2011-07-27
for(i=0;i!=10;i+=0.1) //double的比较是近似比较,i!=10永远成立,循环是死循环。
printf("%.1lf\n",i);追问

只有c语言有这个问题吗?
如何判断2个double类型的变量是否相等?

追答

#include
#include
int main()
{
double i;
for(i=0;fabs(i-10)>1e-2;i+=0.1)
printf("%.1lf\n",i);
return 0;
}

相似回答