Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 767

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Можно ли зашифровать числа с плавающей точкой в 2 байта без потери точности, а лишь диапазона? Я всегда думал что нет, но начальник моего отдела со мной спорит что так можно.

webkent Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: webkent (статус: 2-ой класс)
Вопрос отправлен: 27 ноября 2010, 15:24
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Егор

Здравствуйте, webkent!
согласно этой странице, этой и многим другим, дял хранения мантиссы (т.е. значащих цифр без порядка) нужно:
для типа real (старого, паскалевского) - 5 байт.
для типа single - 3 байта
для типа double - 6 байт с копейками
для типа extended - 8 байт с копейками
т.е. имеем, что для хранения только мантиссы числа нужны минимум 3 байта.
двух точно не хватит.

Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 27 ноября 2010, 18:26

Ответ #2. Отвечает эксперт: Вадим К

Здравствуйте, webkent!
Подойдем к вопросу с другой стороны. Попробуем оценить, сколько можно втиснуть в 2 байта. Припустим, что порядок мы не используем, а только мантису и она от 0 до 0.9999.... (бывает по другому, когда мантису хранят от 1.0000000 до 9.9999999....).
2 байта это 2 в 16 это 65536. Поэтому, минимальная разница, которую можно закодировать - это 1/65536 = 1.5 на 10-5. Это также будет минимальное число, которое можно закодировать в 2 байтах (при выбранной выше системе). Это 4 значащие цифры.
Если такая точность удовлетворяет, то ответ да, можно закодировать. если нет, то нет. Кто знает, что хочет начальник хранить? А это ключевое понятие.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 27 ноября 2010, 20:37


Мини-форум вопроса

Всего сообщений: 6; последнее сообщение — 27 ноября 2010, 22:32; участников в обсуждении: 5.
webkent

webkent (статус: 2-ой класс), 27 ноября 2010, 15:26 [#1]:

Де ради проблемы, а ради интереса вопрос =)
Егор

Егор (статус: 10-ый класс), 27 ноября 2010, 15:41 [#2]:

что? какого диапазона?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 27 ноября 2010, 16:06 [#3]:

Смотря какая точность требуется.
Толяныч

Толяныч (статус: 4-ый класс), 27 ноября 2010, 17:56 [#4]:

Надо выбирать такую работу, где умный начальник. Если 2 байта, один байт на порядок, то остается 1 байт на мантиссу, с использованием скрытого разряда точность будет в районе 0,2% - хуже, чем у логарифмической линейки :-(
min@y™

min@y™ (статус: Доктор наук), 27 ноября 2010, 21:01 [#5]:

Скажи начальнику, что я сказал, что он мудак.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
webkent

webkent (статус: 2-ой класс), 27 ноября 2010, 22:32 [#6]:

ок я так я так и знал =)

Ибо читал вики по типам данных =))

Мин@y твои слова - истина! Он - мудак =)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:52
Выполнено за 0.02 сек.