5

可能重复:
float 与 float 文字比较的奇怪输出
为什么比较 double 和 float 会导致意外结果?

在下面的代码中,我期望答案是“不等于”,因为默认情况下3.5 应该double在 C++ 中,但结果是“等于”。

float a=3.5f声明和有什么区别float a=3.5

#include<iostream>
using namespace std;

int main()
{
    float a=3.5;
    if(a==3.5)  
        cout<<"equal"<<endl;
    else
        cout<<"Not equal"<<endl;
    return 0;
}
4

2 回答 2

14

不。

的类型3.5double,而类型3.5f是浮动的。因此,不能保证它们的值相等。

#include<iostream>

void f(double) { std::cout << "it is double" << std::endl; }
void f(float)  { std::cout << "it is float" << std::endl; }

int main()
{
   f(3.5);
   f(3.5f);
}

输出

it is double
it is float
于 2012-04-28T07:29:31.077 回答
2

浮点数不是一个确切的数字。将它们与 == 进行比较绝不是一个好主意。原因如下:每位计算机科学家都应该了解浮点运算

于 2012-04-28T07:29:33.430 回答