Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
 Аватар для Runa
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363

Как посчитать значение при потери точности?

31.01.2011, 06:01. Показов 4073. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Преобразования плавающих типов. Величины типа float преобразуются к типу double без изменения значения. Величины double и long double преобразуются к float c некоторой потерей точности. Если значение слишком велико для float, то происходит потеря значимости, о чем сообщается во время выполнения.
Собственно никак не получается понять как предсказать потерю точности. Какие биты отбрасываются? то ли смещение с мантиссой, то ли вообще просто старшие биты..
Если кто знает, расскажите пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.01.2011, 06:01
Ответы с готовыми решениями:

Написать программу, демонстрирующую потери точности при арифметических операциях
Можете рассписать по пунктам, что делать? Суть задания я уловила, а как реализовать - без единого понятия! Потеря точности при сложении:...

Что такое ошибки «потери точности»?
Что такое ошибки «потери точности»? Приведите примеры.

Посчитать ln(x) как бесконечную сумму до некоторой точности
Ничего в голову не лезет, нужно это сделать через функцию y=ln\, x=2\sum_{n=0}^{\infty}\frac{(x-1)^{2n+1}}{(2n+1)(x+1)^{2n+1}}\; , \;...

8
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
31.01.2011, 06:09
у них одинаковое число бит на порядок, но у float мантисса короче
грубо говоря, то что у double 0.323424234234324242*10^3 у float будет 0.32342423423*10^3
грубо, потому что мантисса в двоичном виде хранится, и обрезаются биты соответственно
1
 Аватар для Runa
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
31.01.2011, 06:37  [ТС]
на сколько я знаю у float на смещение отводится 8бит, а у double 11. В связи с этим никакие фокусы не вылезают?
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
31.01.2011, 06:39
Maruna, смещение - порядок всмысле? ну если так, то double естественно больший диапазон чисел может представить
0
 Аватар для Runa
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
31.01.2011, 06:54  [ТС]
что больший это понятно, мне интересно как он преобразуется.
Вот например 100 0110 0011 это порядок для double (1023+100), как он будет выглядеть после преобразования во float? Просто пересчитается исходя из нового значения или отбросятся лишние биты?
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
31.01.2011, 08:24
Цитата Сообщение от Maruna Посмотреть сообщение
Просто пересчитается исходя из нового значения или отбросятся лишние биты?
а что там пересчитывать?
просто отбросит лишние биты.
а при фиксированной длине порядка - так и вообще преобразование невозможно, если число больше, чем влазит в новую длину.
у вас есть лучший алгоритм преобразования двоичных чисел?
1
 Аватар для Runa
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
31.01.2011, 08:49  [ТС]
Patch, то есть, если разрядность 100 0110 0011 то после преобразования останется 0110 0011
а порядок вычисляется исходя из 127, а не из 1023, как было в double

у вас есть лучший алгоритм преобразования двоичных чисел?
просто хочу досконально разобраться
0
2343 / 499 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
31.01.2011, 09:11
Цитата Сообщение от Maruna Посмотреть сообщение
Patch, то есть, если разрядность 100 0110 0011 то после преобразования останется 0110 0011
нет, не так.
в числе с плавающей запятой есть мантисса и порядок.
порядок сократить нельзя в принципе - это же число знаков после запятой(или до).
если в получаемом формате длина порядка меньше, чем в исходном, то преобразование НЕВОЗМОЖНО.
а мантиссу сократить можно.
там младшие биты просто отбрасываются.
1
 Аватар для Runa
134 / 87 / 22
Регистрация: 28.08.2009
Сообщений: 363
31.01.2011, 09:24  [ТС]
огромное спасибо, именно это и хотелось узнать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.01.2011, 09:24
Помогаю со студенческими работами здесь

Вычислить корень из числа типа long без потери точности
Собственно, задание такое: Нужно вычислить из очень большого числа типа long квадратный корень, не переводя его в double и без потери...

Банальнейшее среднее арифметическое? Ан нет! Как вычислить без потери точности?
Среднее арифметическое вычисляется просто: (1+2+3+4)/4 =2.5 В коде это будет тоже просто: char array={1,2,3,4}; char...

Вычислить корень из числа типа long без потери точности
Собственно, задание такое: Нужно вычислить из очень большого числа типа long квадратный корень, не переводя его в double и без потери...

Функция, переводящая число из double в short (в случае потери точности выдавать предупреждение)
функция переводит число из double в short, при этом в случае потери точности функция должна выдавать предупреждение на экран. Число вводить...

Создать две переменные, присвоить им значения и вывести на экран без потери точности
Есть такое задание: Дано значение числа pi, которое равно 3,141592653 и значение числа Эйлера е, которое равно 2,7182818284 590452....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru