El punto flotante no se imprime con precisión [duplicado]

Posible duplicado:
Punto flotante en C

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

Cuando ejecuto este programa y ingreso 2 4 56.8, da salida 2 4 56.799999 ..... pero esperaría 2 4 56.8 .... ¿por qué es así?