2017-08-31 146 views
-1

我只是在玩弄數據類型而陷入了這個困境。 這裏任何人都可以解釋我的原因爲什麼這個程序打印「是」作爲輸出?

#include<iostream> 
using namespace std; 

int main() { 

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

我知道那是因爲自動0.7作爲文字將是雙倍。

#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不能完全表示爲二進制浮點數。 –

+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.7沒有確切的表示形式float。大約float0.7(這是在if語句中用作常量時的默認解釋)的double表示法略小一些。

欲瞭解更多詳情,請參閱關於重複或註釋中無數變化的鏈接問題。