Endless for Schleife mit float

Betrachten Sie den folgenden Code:

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

Welche soll von @ loope0 zuint.MaxValue (2 31 -1), aber das tut es nicht. Einmali erreichte 2 24, i++ funktioniert nicht mehr aus einem Grund, den ich überhaupt nicht verstehen kann.

Im Direktfenster von VS habe ich Folgendes versucht:

>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

Warum verhält es sich so? Was ist das Besondere an 2 24 + 1?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage