Comportamiento inesperado de los números de coma flotante en C [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Por qué los números de coma flotante son inexactos? 4 respuestas

Tengo un fragmento de C simple de la siguiente manera:

#include<stdio.h>
#include<conio.h>

int main()    
{
    float a=0.3,b=0.5
    clrscr();

    if(a==0.3)
    {
        printf("equal");
    }
    else
    {
        printf("unequal");
    }

    if(b==0.5)
    {
        printf("equal");
    }
    else
    {
        printf("unequal");
    }

    getch();
}

muestra la salida como:unequal equal.

Entiendo esto porque la computadora toma0.3 como1/3 y como0.333... no es igual a0.33, muestra resultados desiguales, mientras que en0.5 es un número preciso por lo que da salida comoequal.

Pero ahora si tomofloat b=0.2 Me gusta esto:

float b=0.2;
if(b==0.2)
{
    printf("equal");
}
else
{
    printf("unequal");
}

Entonces también muestraunequal como salida! Como0.2 es1/5 - valor preciso, debería dar salidaequal.

¿Alguien puede decirme si algo está mal aquí?

Respuestas a la pregunta(1)

Su respuesta a la pregunta