2017-08-31 9 views
-1

私はちょうどデータ型で遊んでいて、このジレンマに乗っていました。 は、ここで誰もが、私は自動的に0.7リテラルとしては、二重のものであろうので、それは知っている私にこのプログラムが出力として「はい」を印刷しているのはなぜですか?

#include<iostream> 
using namespace std; 

int main() { 

    float a= 0.7; 
    if(a < 0.7) 
     cout<<"Yes"; 
    else 
     cout<<"No"; 
    return 0; 
} 

理由を説明することができます。

#include<iostream> 
using namespace std; 
int main(){ 

    float a= 0.8; 
    if(a < 0.8) 
    cout<<"Yes"; 
    else 
    cout<<"No"; 
    return 0; 
} 
+1

0.7を2進浮動小数点数として正確に表現することはできないためです。 –

+0

あなたの「ジレンマ」は何ですか?あなたが表示するコードの問題は何ですか?実際の出力と期待される出力は何ですか? *質問の本文にすべて*を入れてください。タイトルは身体の質問の要約に過ぎません。まだお持ちでない方は、[良い質問をする方法を読む](http://stackoverflow.com/help/how-to-ask)をご覧ください。 –

+0

https://stackoverflow.com/q/7011184/995714 https://stackoverflow.com/q/6883306/995714 https://stackoverflow.com/q/16698198/995714 –

答えて

1

0.7floatとして全く正確な表現を有していません。おおよそのfloatは、0.7double表現(これは、ifステートメントで定数として使用されるときのデフォルトの解釈です)より少し小さいです。

詳細については、重複またはコメントの無数のバリエーションに関するリンクを参照してください。

関連する問題