C/C++:为什么程序输出结果是不等(Unequal)
来源:百度知道 编辑:UC知道 时间:2024/09/20 21:46:21
#include <iostream.h>
int main(int argc, char* argv[])
{
float a=1.0;
float b=0.1;
float c=0.0;
for(int i=0;i<10;i++)
c+=b;
if(a==c)
cout<<"Equal\r\n"<<endl;
else
cout<<"unequal\r\n"<<endl;
return 0;
}
int main(int argc, char* argv[])
{
float a=1.0;
float b=0.1;
float c=0.0;
for(int i=0;i<10;i++)
c+=b;
if(a==c)
cout<<"Equal\r\n"<<endl;
else
cout<<"unequal\r\n"<<endl;
return 0;
}
对于float和double类型的变量均不能用"=="或者"!="进行比较
比较两个float变量:
if ( a-c < FLT_EPSILON )
cout<<"Equal\r\n"<<endl;
else
cout<<"unequal\r\n"<<endl;
比较两个double变量:
if ( a-c < DBL_EPSILON )
cout<<"Equal\r\n"<<endl;
else
cout<<"unequal\r\n"<<endl;
另外需要加上头文件
#include <float.h>
等啊
计算机运行时,类型要转换,比如这里c+=b;float型要转换成double型
你写的程序中a和c都是float型的变量,两个float型变量在进行类似a==c之类的逻辑运算之后,其返回值不是真正的可以被编译器认为是BOOL型的值.
你可以把a,c强制转换成int型的,这样他们经过逻辑运算后才能返回正确的BOOL型值.
也就是说,if(a==c) 应该改为 if((int)a==(int)c),就能显示 Equal 了
1.楼上的回答是不正确的,如果最后自出c=1.1,那么经(int)c后,c=1;明明不相等的数却显示相等。
2.程序中
float a=1.0;
float b=0.1;
float c=0.0; 是否有warning?
改写成
float a=1.0f;
float b=0.1f;
float c=0.0f; 吧
3. float类型的比较是不能用==、<、>之