Неожиданное поведение чисел с плавающей точкой в ​​C [дубликат]

На этот вопрос уже есть ответ здесь:

Почему числа с плавающей запятой неточные? 4 ответа

У меня есть простой фрагмент кода C следующим образом:

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

показывает вывод как:unequal equal.

Я понимаю это, потому что компьютер берет0.3 как1/3 и в качестве0.333... не равно0.33показывает неравный выходной сигнал, а в0.5 точное число, так что это дает вывод какequal.

Но теперь, если я возьмуfloat b=0.2 как это:

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

Тогда это также показываетunequal как выходной! Как0.2 является1/5 - точное значение, оно должно дать выводequal.

Может кто-нибудь сказать мне, если что-то здесь не так?

Ответы на вопрос(1)

Ваш ответ на вопрос