![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Хоббит |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
Нужно вычислить максимальное значение типа с плавающей запятой, например double. Не используя limits.h, именно вычислить.
Для интегральных типов это довольно просто, например для int я сделал так (~0u >> 1). Отрицаем 0, получем все единицы и сдвигаем в право, при этом тип unsigned чтобы в старшем бите стал 0. Какие варианты есть с вещественными числами? |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
надо вспоминать как устроен float, мантиса а т.д. -------------------- вопросов больше чем ответов |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
чтобы получить максимальное число, нужно z умножать на 2 пока не получишь переполнение Это сообщение отредактировал(а) math64 - 6.10.2011, 20:25 |
|||
|
||||
| math64 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Компилятор gcc, предполагаем что при переполнении получаем бесконечноть и при умножении бескончности на два получаем ту же бесконечность
Результат:
Вычисленное минимальное значение меньше DBL_MIN, потому что double позволяет хранить числа с ненормализованой мантиссой z=DBL_MIN * DBL_EPSILON |
||||
|
|||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |