Pływający punkt nie drukuje dokładnie [duplikat]

Możliwy duplikat:
Problem zmiennoprzecinkowy w C

#include<stdio.h>
main()
{
        int a,b;
        float f;
        scanf("%2d%3d%4f",&a,&b,&f);
        printf("%d %d %f",a,b,f);
}

Kiedy uruchomię ten program i wprowadzę 2 4 56,8, daje wyjście 2 4 56,9999 ..... ale oczekiwałbym 2 4 56,8 .... dlaczego tak jest ???

questionAnswers(3)

yourAnswerToTheQuestion