porównanie podwójne i float [duplikat]
To pytanie ma już tutaj odpowiedź:
Porównywanie pływaka i podwójnego 3 odpowiedziWedługten post, porównując float i double, float należy traktować jako double. Poniższy program nie wydaje się podążać za tym stwierdzeniem. Zachowanie wygląda dość nieprzewidywalnie. Oto mój program:
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;
}
Po uruchomieniu następującego programu wyświetlany jest komunikat „nie działa”.Jednak gdy zmieniam a i b na 1.5, wyświetla się „sukces”.Wydrukowałem również szesnastkowe zapisy wartości. Są różne w obu przypadkach. Moim kompilatorem jest Visual Studio 2005
Czy możesz wyjaśnić ten wynik? Dzięki.