Двоичная с плавающей запятой не может точно представлять значение 0.1, потому что ее двоичное расширение не имеет конечного числа цифр (точно так же, как десятичное расширение 1/7 - нет).
двоичное расширение 0,1 равно
0.000110011001100110011001100...
При усечении до IEEE-754 с одинарной точностью это примерно 0.100000001490116119
в десятичном виде.Это означает, что каждый раз, когда вы добавляете значение «почти 0,1» к своей переменной, вы накапливаете небольшую ошибку - поэтому окончательное значение немного выше, чем 1.0
.