Для ясности, если я использую язык, который реализует плавающие объекты IEE 754, и я объявляю:
float f0 = 0.f;
float f1 = 1.f;
... а затем распечатать их обратно, я получу 0,0000 и 1,0000 - точно.
Но IEEE 754 не способен представлять все числа вдоль реальной линии. Близко к нулю, «пробелы» малы; по мере того как вы уходите дальше, промежутки увеличиваются.
Итак, мой вопрос: для числа с плавающей запятой IEEE 754, какое первое (ближайшее к нулю) целое число не может быть точно представлено? На данный момент меня интересуют только 32-битные числа с плавающей запятой, хотя мне было бы интересно услышать ответ на 64-битную версию, если кто-то ее даст!
Я думал, что это будет так же просто, как вычислить 2 bits_of_mantissa и добавить 1, где bits_of_mantissa - это количество битов, которое предоставляет стандарт. Я сделал это для 32-разрядных операций с плавающей запятой на моей машине (MSVC ++, Win64), и все выглядело нормально.