Precisión de punto flotante C [duplicado]

Posible duplicado:
Comparación de punto flotante

Tengo un problema sobre la precisión de flotación en C / C ++. Cuando ejecuto el siguiente programa:

#include <stdio.h>

int main (void) {
    float a = 101.1;
    double b = 101.1;
    printf ("a: %f\n", a);
    printf ("b: %lf\n", b);
    return 0;
}

Resultado:

a: 101.099998
b: 101.100000

Creo que float debería tener 32 bits, por lo que debería ser suficiente para almacenar 101.1 ¿Por qué?

Respuestas a la pregunta(6)

Su respuesta a la pregunta