Для ясности, если я использую язык, который реализует плавающие объекты 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), и все выглядело нормально.