| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Вычислить максимальное возможное значение double |
| Автор: Хоббит 6.10.2011, 18:38 |
| Нужно вычислить максимальное значение типа с плавающей запятой, например double. Не используя limits.h, именно вычислить. Для интегральных типов это довольно просто, например для int я сделал так (~0u >> 1). Отрицаем 0, получем все единицы и сдвигаем в право, при этом тип unsigned чтобы в старшем бите стал 0. Какие варианты есть с вещественными числами? |
| Автор: Леопольд 6.10.2011, 19:42 |
надо вспоминать как устроен float, мантиса а т.д. |
| Автор: math64 6.10.2011, 20:24 | ||
чтобы получить максимальное число, нужно z умножать на 2 пока не получишь переполнение |
| Автор: math64 6.10.2011, 21:56 | ||||
Компилятор gcc, предполагаем что при переполнении получаем бесконечноть и при умножении бескончности на два получаем ту же бесконечность
Результат:
Вычисленное минимальное значение меньше DBL_MIN, потому что double позволяет хранить числа с ненормализованой мантиссой z=DBL_MIN * DBL_EPSILON |
| Автор: borisbn 6.10.2011, 22:30 |
| http://en.wikipedia.org/wiki/Double_precision_floating-point_format ? |