Форум программистов, компьютерный форум CyberForum.ru

Объясните условие задачи - C++

Восстановить пароль Регистрация
 
hofmn
Helter Skelter
 Аватар для hofmn
61 / 61 / 1
Регистрация: 19.09.2012
Сообщений: 133
21.02.2013, 00:48     Объясните условие задачи #1
Опишите функцию деления двух чисел с плавающей запятой, обработайте ошибку переполнения снизу (underflow) и ошибку переполнения сверху (overflow).

Не могу понять суть задачи. Речь идет о диапазоне допустимых значений дла типа float?
Если да, то как реализовать такую ​​проверку?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2013, 00:48     Объясните условие задачи
Посмотрите здесь:

C++ Условие задачи
Объясните условие C++
C++ условие задачи
C++ Задачи на условие...
C++ условие задачи
Непонятное условие задачи C++
Условие задачи C++
C++ Объясните условие задачи

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.02.2013, 01:23     Объясните условие задачи #2
Да.

Смотрите. Ненулевое число с плавающей запятой имеет вид –1s × m × 2e ≡ (s, m, e). Очевидно, частное двух таких чисел (s1, m1, e1) / (s2, m2, e2) = (s1s2, m1 / m2, e1e2). На второй элемент кортежа накладывается ограничение: 1 ≤ m1 / m2 < 2, так что фактически частное должно быть в виде (s1s2, m3, e1e2 + en), где en — нормализующий порядок, который вводится для того, чтобы m3 было в правильных границах. Так вот, у чисел с плавающей запятой ограничен диапазон порядков: для float это [–126, +127], для double — [–1022, +1023]. Если e1e2 + en туда не влезает, то у вас переполнение.

Единственная деталь — денормализованные числа. Нижнюю границу порядка можно понизить ещё максимум на 23 (для float) или 52 (для double), но ценой точности. Делается это смещением m3 в диапазон (0, 1).
Yandex
Объявления
21.02.2013, 01:23     Объясните условие задачи
Ответ Создать тему
Опции темы

Текущее время: 01:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru