最近我在if語句中比較double時遇到了問題。我試圖用雙倍數來表示整數。作爲初學者,我不確定我的代碼出了什麼問題。比較double錯誤C++
這是我的代碼:
#include <iostream>
using namespace std;
int main(){
int x=0;//convert double to int
long double Out;//Result
long double In=10;//Input double
//Loop Begin
while(In>0){
x=In;//convert double to int
Out= (x/In);//Out(test if whole number, will return 1)
//test for 1
////////////////
if(Out == 1){
cout<<"[Whole Number] ";
}
////////////////
//test end
cout<<"In :"<<In<<", ";
cout<<"X :"<<x<<", ";
cout<<"Out :"<<Out<<endl;
In-=0.1;//decrease to finish loop (eventually)
}
//Loop End
cin.get();
return 0;
}
這項計劃將測試和輸出的雙(中)整數。我意識到double的準確性影響了if語句,因此我無法得到「[Whole Number]」結果。雖然我發現如果我在「if(Out> = 0.9999)」中使用了(0.9999),那麼比較就會奏效。但我不確定解決方案,請幫忙!非常感激!
可能重複的[我應該如何做浮點比較?](http://stackoverflow.com/questions/4915462/how-should-i-do-floatingpoint-comparison) – Slava 2014-11-04 18:49:45