Comportamento inesperado dos números de ponto flutuante em C [duplicado]

Esta pergunta já tem uma resposta aqui:

Por que os números de ponto flutuante são imprecisos? 4 respostas

Eu tenho um snippet C simples da seguinte maneira:

#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();
}

mostra a saída como:unequal equal.

Eu entendo isso porque o computador leva0.3&nbsp;Como1/3&nbsp;e como0.333...&nbsp;não é igual a0.33, mostra a saída desigual, enquanto em0.5&nbsp;é um número preciso, por isso fornece a saída comoequal.

Mas agora se eu pegarfloat b=0.2&nbsp;como isso:

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

Então também mostraunequal&nbsp;como saída! Como0.2&nbsp;é1/5&nbsp;- valor preciso, deve dar saídaequal.

Alguém pode me dizer se algo está errado aqui?