Unerwartetes Verhalten von Gleitkommazahlen in C [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Warum sind Gleitkommazahlen ungenau? 4 Antworten

Ich habe ein einfaches C-Snippet wie folgt:

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

zeigt Ausgabe als:unequal equal.

Ich verstehe das, weil Computer nimmt0.3 wie1/3 und wie0.333... ist ungleich zu0.33, zeigt die Ausgabe ungleich, während in0.5 ist eine genaue Zahl, die als @ ausgegeben wiequal.

Aber jetzt, wenn ich nehmefloat b=0.2 so was

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

Dann zeigt es auchunequal als Ausgabe! Wie0.2 ist1/5 - genauer Wert, es sollte eine Ausgabe @ gebequal.

ann mir jemand sagen, ob hier etwas nicht stimm

Antworten auf die Frage(1)

Ihre Antwort auf die Frage