Postato originariamente da Afa: Intendi in questo modo?
if (fabs(a-0.2)<FLT_EPSILON)
if (fabs(a-0.3)<FLT_EPSILON)
if (fabs(a-0.5)<FLT_EPSILON)
Si.
Non sempre.
Le costanti 0.2, 0.4 e 0.5 sono considerate double. Nel caso specifico funziona perché sono numeri vicini ad 1.
Con valori più grandi, le cose cambiano; prova questo esempio: