c语言小小问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:02:21
#include<stdio.h>
main()
{
float data=0.2;

if (0.2==data)
printf("right data=%f",data);

else
printf("wrong data=%f",data);

getch();
}

运行以后结果为wrong
如果改为double data=0.2 结果显示为right
float和double都是浮点型数据,按理说都应该不能直接与实数比较
可double却可以,为什么呢?

不太理解
可能精度有问题。
今天问老师了,是精度问题
计算机内没有等于,只是无限接近,便按等处理
double 比foalt 精度高,更接近0.2(实数)
计算机便近似等于处理
还有,一般不应该==这样比较,可以小于<或>大于比较.

嗯。应该是精度问题。float的0.2应该是0.200000
估计是这个问题。不是很确定

#include<stdio.h>
main()
{
float data=0.2;

if (0.2==data) 看你这里,什么意思?
float 是4个字节,可0.2 不是,相比较一定不同。
所以 wrong

printf("right data=%f",data);

else
printf("wrong data=%f",data);

getch();
}