двойное и плавающее сравнение [дубликаты]
На этот вопрос уже есть ответ здесь:
Сравнивая поплавок и двойник 3 ответаСогласно сэта почтапри сравнении числа с плавающей точкой и числа с двойным числом, число с плавающей точкой должно рассматриваться как двойное. Следующая программа, похоже, не следует этому утверждению. Поведение выглядит довольно непредсказуемо. Вот моя программа:
void main(void)
{
double a = 1.1; // 1.5
float b = 1.1; // 1.5
printf("%X %X\n", a, b);
if ( a == b)
cout << "success " <<endl;
else
cout << "fail" <<endl;
}
Когда я запускаю следующую программу, я получаю сообщение об ошибке.Тем не менее, когда я изменяю a и b на 1,5, он отображает «успех».Я также напечатал шестнадцатеричные обозначения значений. Они разные в обоих случаях. Мой компилятор Visual Studio 2005
Можете ли вы объяснить этот вывод? Благодарю.