В последнее время я сталкиваюсь с проблемой при сравнении double в выражении if. Я пытался вырезать количество целых чисел в два раза. Будучи новичком, я не уверен, что случилось с моим кодом.Сравнение двойной ошибки 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;
}
Эта программа будет проверять и выводить целые числа в двойном (In). Я понял, что точность двойника влияет на оператор if, поэтому я не могу получить результат «[Целый номер]». Хотя я узнал, что если бы я использовал (0.9999) в «if (Out> = 0.9999)», сравнение будет работать. Но я не уверен в решении, пожалуйста, помогите! Очень признателен!
Возможный дубликат [Как мне сделать сравнение с плавающей запятой?] (Http://stackoverflow.com/questions/4915462/how-should-i-do-floating-point-comparison) – Slava