C precisão do ponto flutuante [duplicado]

Duplicata Possível:
Comparação de ponto flutuante

Eu tenho um problema sobre a precisão do float em C / C ++. Quando executo o programa abaixo:

#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

Eu acredito que float deve ter 32 bits, então deve ser suficiente para armazenar 101.1 Por quê?

questionAnswers(6)

yourAnswerToTheQuestion