5

重複の可能性:
floatとfloatリテラルの比較での奇妙な出力
なぜdoubleとfloatを比較すると、予期しない結果が生じるのですか?

3.5 次のコードでは、デフォルトでC ++である必要があるため、答えが「等しくない」と予想していましdoubleたが、結果は「等しい」でした。

宣言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.5ですがdouble、のタイプ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 に答える