红色警戒2有多少任务:C/C++:为什么程序输出结果是不等(Unequal)

来源:百度文库 编辑:高考问答 时间:2024/05/02 11:42:12
#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;
}

对于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类型的比较是不能用==、<、>之类的,把
if(a==c)
写成if((a-c)<0.0000001)试试^_^

4.你添加一句cout<<a-c;看下会输出什么结果。
-1.19209e-007