Infinito para loop com flutuador

Considere o seguinte código:

for (float i = 0f; i < int.MaxValue; i++)
{
    // Some code
}

Que deveria fazer um loop de0 paraint.MaxValue (231-1), mas não. Uma vezi atingiu 224, i++ não funciona mais por um motivo que eu sou totalmente incapaz de entender.

Na janela imediata do VS, tentei o seguinte:

>i
16777216.0
>i + 1
16777216.0 // ???
>i == i + 1
false // as expected, but a lack of consistency with upper statement
>i + 2
16777218.0

Por que se comporta assim? O que é especial com 224+1?

questionAnswers(1)

yourAnswerToTheQuestion