Следующий код в С# (.Net 3.5 SP1) - это бесконечный цикл на моей машине:
for (float i = 0; i < float.MaxValue; i++) ;
Он достиг номера 16777216.0 и 16777216.0 + 1 оценивается до 16777216.0. Однако на данный момент: я + 1!= I.
Это безумие.
Я понимаю, что есть некоторая неточность в том, как хранятся числа с плавающей запятой. И я читал, что целые числа больше 2 ^ 24, чем не могут быть правильно сохранены как плавающие.
Тем не менее, код выше, должен быть действительным на С#, даже если номер не может быть правильно представлен.
Почему это не работает?
Вы можете получить то же самое, что и в случае двойного, но это занимает очень много времени. 9007199254740992.0 - это предел для двойного.