Может ли кто-нибудь объяснить мне эту странность с плавающей запятой?C#

Место общения программистов C#
Anonymous
Может ли кто-нибудь объяснить мне эту странность с плавающей запятой?

Сообщение Anonymous »

Я пытался перебрать все возможные значения числа с плавающей запятой следующим образом:

Код: Выделить всё

float i = 0.0F;
float epsilon = float.Epsilon;
while (i != float.MaxValue) {
i += epsilon;
}
но после достижения значения 2.3509887E-38F оно перестает увеличиваться.

Код: Выделить всё

float init = 2.3509887E-38F;
float f = (init + float.Epsilon);
Console.WriteLine(f == init);
Мне просто интересно, может кто-нибудь объяснить, почему?
Итак, я могу добавить эпсилон к числу с плавающей запятой 16777216 раз до ошибки округления, и это число выглядит ужасно знакомым (224).>

Вернуться в «C#»