|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Michael Ryazanov 2:5030/1006.64 13 Oct 2002 20:51:00 To : Max Alekseyev Subject : Re: Округление к ближайшему -------------------------------------------------------------------------------- 08.10 14:42 Max Alekseyev, 2:5015/60 -> Vlad Golubev MA> Процитирую соответствующий параграф из "Аппроксиметрики" В.М.Юровицкого: MA> http://yur.ru/science/computer/appro/monografia.htm MA> ===cut=== MA> 1.4.1. Округление приближенного числа MA> Важнейшей операцией в классической системе обработки приближенных чисел MA> является операция округления, т.е. переход от данного числа к некоему MA> связанному с ним, но менее точному, с меньшим числом значащих разрядов. MA> Округление на один разряд сводится к превращению последнего значащего MA> разряда в незначащий (отбрасывание или замена незначащим нулем). Если MA> отбрасываемый разряд меньше 5, то больше ничего не делается (округление с MA> недостатком), а если отбрасываемый разряд превышает 5, то предшествующий MA> значащий разряд увеличивается на единицу (округление с избытком). Если же MA> округляемый разряд равен 5, то действует правило: четный MA> предшествующий разряд не изменяется, а нечетный увеличивается на единицу. MA> Если операцию округления обозначим через Q, то легко видеть, что MA> Q(123'00)=12'000, Q(0.3456')=0.346', Q(22.5')=22', Q(11.995')=12.00'. MA> Важным свойством округления в классической теории приближенных чисел MA> является равновероятность округления в любую сторону - как с избытком, так MA> и с недостатком. MA> Казалось бы, мы имеем очень простую и естественную систему округления. Увы, MA> компьютерная техника так до сих пор и не смогла освоить этот алгоритм MA> округления. MA> ===cut=== Автор либо писал это в незапамятном году, либо совершенно не знаком с вопросом. Вот цитата из документации к процессору i486: 15.2.3 Управление округлением Во внутреннем представлении модуль обработки операций с плавающей точкой процессора i486 использует три дополнительных бита (бит защиты, бит округления и бит подклейки), которые применяются для округления чисел в соответствии с истинным результатом бесконечной точности вычислений. Эти биты не доступны для программиста. Всегда, когда адресат может представить истинный результат бесконечной точности, модулю обработки операций с плавающей точкой не надо производить округление. Округление производится в арифметических операциях и операциях сохранения, когда формат адресата не может точно представить истинный результат с бесконечной точностью. Hапример, вещественное число может быть округлено, если оно сохраняется в более коротком вещественном формате или в целочисленном формате. Истинный результат бесконечной точности также может быть округлен при занесении в регистр. Модуль обработки операций с плавающей точкой процессора i486 имеет четыре режима округления, устанавливаемые в поле управления округлением (RC) управляющего слова (смотрите Рисунок 15-3). По данному истинному результату b, который не может быть представлен нужным типом данных, модуль обработки операций с плавающей точкой определяет два представимых числа a и c, которые наиболее точно подходят к значению числа b с двух сторон (a < b < c). Затем процессор округляет (изменяет) b на a или c в соответствии с режимом, установленном в поле округления, как показано в Таблице 15-5. Округление вносит в результат ошибку, которая не больше чем единица в разряде, по которому велось округление. Таблица 15-5. Режимы Округления ЪДДДДДДДДДДДВДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї іПоле Управ-і Режим і і іленеия Окруі Округления і Действия при Округлении і іглением і і і ГДДДДДДДДДДДЕДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ і 00 іОкругление до і Определяем, к чему ближе b: к a илиі і іближайшего і c; если число равноудалено от этих і і і і чисел, то выбор четного числа (то, і і і і у которого наименьший значащий бит і і і і нулевой). і ГДДДДДДДДДДДЕДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ і 01 і Округление і і і і снизу і a і і і (до -x) і і ГДДДДДДДДДДДЕДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ і 10 і Округление і і і і сверху і c і і і (до +x) і і ГДДДДДДДДДДДЕДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ і 11 і Отсечение і Hаименьшее из a или c і і і (до 0) і і АДДДДДДДДДДДБДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ ОБРАТИТЕ ВHИМАHИЕ: a < b < c; a и c - успешно представимые числа; b - не представимо. - "Округление до ближайшего" - этот режим устанавливается по умолчанию и применим ко многим программным продуктам; он предоставляет наибольшую точность и статистически несмещенную оценку истинного результата. - Режим "отсечения" или "округления до нуля" применим к целочисленным арифметическим операциям. - "Округление в большую сторону" и "округление в меньшую сторону" называются ориентированным округлением и могут быть использованы для реализации интервальной арифметики. Интервальная арифметика используется для определения верхней и нижней границы для истинного результата многоступенчатых расчетов при округлении промежуточных результатов вычислений. Управление округлением применимо только к арифметическим операциям (список арифметических и неарифметических команд приведен в Главе 16). И всё это является *стандартом*: Возможности процессора i486 включают в себя: <...> - Встроенный модуль обработки арифметических операций с плавающей точкой для поддержки 32, 64, и 80-разрядных форматов, заданных в соответствие со стандартом IEEE 754 (объектно совместимом с 387 (TM) DX и 387 SX арифметическими сопроцессорами); |V|uxau/\ --- -- - ъ * Origin: Ф И З Ф А К - Ч Е М П И О H ! (2:5030/1006.64) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/45633da9dcec.html, оценка из 5, голосов 10
|