Comparação de ponto flutuante [duplicado]

Esta pergunta já tem uma resposta aqui:

Exemplos de imprecisão de pontos flutuantes 7 respostas
int main()
{
    float a = 0.7;
    float b = 0.5;
    if (a < 0.7)
    {
       if (b < 0.5) printf("2 are right");
       else         printf("1 is right");
    }
    else printf("0 are right");
}

Eu esperava que a saída desse código fosse0 are right. Mas, para minha consternação, a saída é1 is right porque

questionAnswers(5)

yourAnswerToTheQuestion