Округление
Округление — замена числа на его приближённое значение (с определённой точностью), записанное с меньшим количеством значащих цифр. Модуль разности между заменяемым и заменяющим числом называется ошибкой округления.
Округление применяется для представления значений и результатов вычислений с тем количеством знаков, которое соответствует реальной точности измерений или вычислений, либо той точности, которая требуется в конкретном приложении. Округление в ручных расчётах также может использоваться для упрощения вычислений в тех случаях, когда погрешность, вносимая за счёт ошибки округления, не выходит за границы допустимой погрешности расчёта.
Общий порядок округления и терминология
[править | править код]- Округление числа, записанного в позиционной системе счисления с M знаками дробной части, может производиться «до K-го знака после запятой», где K ≤ M. При таком округлении в записи числа отбрасываются справа (M-K) значащих цифр, а K-я цифра после запятой может измениться (см. #Методы). Применяется также терминология с указанием единицы наименьшей десятичной доли, сохраняющейся у округлённого числа, то есть «округление до десятых», «…до сотых», «…до тысячных» и т. д. (соответствует округлению до одного, двух, трёх и так далее знаков после запятой). Частный случай, когда K=0, называется «округлением до целого».
- Когда при округлении отбрасываются значащие цифры целой части числа, говорят об «округлении до десятков» (сотен, тысяч и так далее), отбрасывая, соответственно, один, два, три и более знака. При таком округлении отбрасываемые цифры целой части числа заменяются на нули.
- Для чисел, представленных в нормализованном виде, говорят об «округлении до K (значащих) цифр». При этом мантисса числа сохраняет K значащих цифр, остальные цифры справа отбрасываются.
Методы
[править | править код]В разных сферах могут применяться различные методы округления. Во всех этих методах «лишние» знаки обнуляют (отбрасывают), а предшествующий им знак корректируется по какому-либо правилу.
Округление к ближайшему целому
[править | править код]Округление к ближайшему целому — наиболее часто используемое округление, при котором число округляется до целого, модуль разности с которым у этого числа минимален. В общем случае, когда число в десятичной системе округляют до N-го знака, правило может быть сформулировано следующим образом:
- если N+1 знак < 5, то N-й знак сохраняют, а N+1 и все последующие обнуляют;
- если N+1 знак ≥ 5, то N-й знак увеличивают на единицу, а N+1 и все последующие обнуляют;
Например: 11,9 → 12; −0,9 → −1; −1,1 → −1; 2,5 → 3. Максимальная дополнительная абсолютная погрешность, вносимая при таком округлении (погрешность округления), составляет ±0,5 последнего сохраняемого разряда.
Округление к большему
[править | править код]Округление к большему (округление к +∞, округление вверх, англ. ceiling — досл. «потолок») — если обнуляемые знаки не равны нулю, предшествующий знак увеличивают на единицу, если число положительное, или сохраняют, если число отрицательное. В экономическом жаргоне — округление в пользу продавца, кредитора (лица, получающего деньги). В частности, 2,6 → 3, −2,6 → −2. Погрешность округления — в пределах +1 последнего сохраняемого разряда.
Округление к меньшему
[править | править код]Округление к меньшему (округление к −∞, округление вниз, англ. floor — досл. «пол») — если обнуляемые знаки не равны нулю, предшествующий знак сохраняют, если число положительное, или увеличивают на единицу, если число отрицательное. В экономическом жаргоне — округление в пользу покупателя, дебитора (лица, отдающего деньги). Здесь 2,6 → 2, −2,6 → −3. Погрешность округления — в пределах −1 последнего сохраняемого разряда.
Округление к большему по модулю
[править | править код]Округление к большему по модулю (округление к бесконечности, округление от нуля) — относительно редко используемая форма округления. Если обнуляемые знаки не равны нулю, предшествующий знак увеличивают на единицу. Погрешность округления составляет +1 последнего разряда для положительных и −1 последнего разряда для отрицательных чисел.
Округление к меньшему по модулю
[править | править код]Округление к меньшему по модулю (округление к нулю, целое англ. fix, truncate, integer) — самое «простое» округление, поскольку после обнуления «лишних» знаков предшествующий знак сохраняют, то есть технически оно состоит в отбрасывании лишних знаков. Например, 11,9 → 11; −0,9 → 0; −1,1 → −1). При таком округлении может вноситься погрешность в пределах единицы последнего сохраняемого разряда, причём в положительной части числовой оси погрешность всегда отрицательна, а в отрицательной — положительна.
Случайное округление
[править | править код]Случайное округление — округление происходит в меньшую или большую сторону в случайном порядке, при этом вероятность округления вверх равна дробной части. Этот способ делает накопление ошибок случайной величиной с нулевым математическим ожиданием.
Варианты округления 0,5 к ближайшему целому
[править | править код]Отдельного описания требуют правила округления для специального случая, когда (N+1)-й знак = 5, а последующие знаки равны нулю. Если во всех остальных случаях округление до ближайшего целого обеспечивает меньшую погрешность округления, то данный частный случай характерен тем, что для однократного округления формально безразлично, производить его «вверх» или «вниз» — в обоих случаях вносится погрешность ровно в 1/2 младшего разряда. Существуют следующие варианты правила округления до ближайшего целого для данного случая:
- Математическое округление — округление всегда в бо́льшую по модулю сторону (предыдущий разряд всегда увеличивается на единицу, по стандарту IEEE/ISO/IEC 60559 режим округления roundTiesToAway).
- Округление до ближайшего чётного (в английском языке известно под названием англ. banker's rounding — «округление банкира») — округление для этого случая происходит к ближайшему чётному числу, то есть 2,5 → 2; 3,5 → 4.
- Случайное округление — округление происходит в меньшую или большую сторону в случайном порядке, но с равной вероятностью (может использоваться в статистике).
- Чередующееся округление — округление происходит в меньшую или большую сторону поочерёдно.
Во всех вариантах в случае, когда (N+1)-й знак не равен 5 или последующие знаки не равны нулю, округление происходит по обычным правилам: 2,49 → 2; 2,51 → 3.
При математическом округлении близкие к 0 результаты вычислений, выполненных с точностью не хуже 0,5 единиц младшего разряда, не могут быть случайно округлены до 0, но его недостатком является то, что при округлении большого числа значений, которые далее будут обрабатываться совместно, может происходить накопление ошибки округления. Типичный пример: округление до целых рублей денежных сумм, выражаемых в рублях и копейках. В реестре из 10 000 строк (если считать копеечную часть каждой суммы случайным числом с равномерным распределением, что обычно вполне допустимо) окажется в среднем около 100 строк с суммами, содержащими в части копеек значение 50. При округлении всех таких строк по правилам математического округления «вверх» сумма «итого» по округлённому реестру окажется на 50 рублей больше точной.
Три остальных варианта как раз и придуманы для того, чтобы уменьшить общую погрешность суммы при округлении большого количества значений. Округление «до ближайшего чётного» исходит из предположения, что при большом числе округляемых значений, имеющих 0,5 в округляемом остатке, в среднем половина из них окажется слева, а половина — справа от ближайшего чётного, таким образом, ошибки округления взаимно погасятся. Строго говоря, предположение это верно лишь тогда, когда набор округляемых чисел обладает свойствами случайного ряда, что обычно верно в бухгалтерских приложениях, где речь идёт о ценах, суммах на счетах и так далее. Если же предположение будет нарушено, то и округление «до чётного» может приводить к систематическим ошибкам. Для таких случаев лучше работают два следующих метода.
Два последних варианта округления гарантируют, что примерно половина специальных значений будет округлена в одну сторону, половина — в другую. Но реализация таких методов на практике требует дополнительных усилий по организации вычислительного процесса.
- Округление в случайную сторону требует для каждой округляемой строки генерировать случайное число. При использовании псевдослучайных чисел, создаваемых линейным рекуррентным методом, для генерации каждого числа требуется операция умножения, сложения и деления по модулю, что для больших объёмов данных может существенно замедлить расчёты.
- Чередующееся округление требует хранить флаг, показывающий, в какую сторону последний раз округлялось специальное значение, и при каждой операции переключать значение этого флага.
Обозначения
[править | править код]Операция округления числа x к большему (вверх) обозначается следующим образом: . Аналогично, округление к меньшему (вниз) обозначается . Эти символы (а также английские названия для этих операций — соответственно, ceiling и floor, досл. «потолок» и «пол») были введены[1] К. Айверсоном в его работе A Programming Language[2], описавшей систему математических обозначений, позже развившуюся в язык программирования APL. Айверсоновские обозначения операций округления были популяризированы Д. Кнутом в его книге «Искусство программирования»[3].
По аналогии, округление к ближайшему целому часто обозначают как . В некоторых прежних и современных (вплоть до конца XX века) работах так обозначалось округление к меньшему; такое использование этого обозначения восходит ещё к работе Гаусса 1808 года (третье его доказательство квадратичного закона взаимности). Кроме того, это же обозначение используется (с другим значением) в нотации Айверсона.[1]
В стандарте Юникод зафиксированы следующие символы:
Название в Юникоде |
Код в Юникоде | Вид | Мнемоника в HTML 4 |
Примечания | |
---|---|---|---|---|---|
16-ричный | десятичный | ||||
LEFT CEILING (тж. APL upstile) | 2308 | 8968 | ⌈ | ⌈ | не путать с:
|
RIGHT CEILING | 2309 | 8969 | ⌉ | ⌉ | не путать с:
|
LEFT FLOOR (тж. APL downstile) | 230A | 8970 | ⌊ | ⌊ | не путать с:
|
RIGHT FLOOR | 230B | 8971 | ⌋ | ⌋ | не путать с:
|
Применения
[править | править код]Округление используется для того, чтобы работать с числами в пределах того количества знаков, которое соответствует реальной точности параметров вычислений (если эти значения представляют собой измеренные тем или иным образом реальные величины), реально достижимой точности вычислений либо желаемой точности результата. В прошлом округление промежуточных значений и результата имело прикладное значение (так как при расчётах на бумаге или с помощью примитивных устройств типа абака учёт лишних десятичных знаков может серьёзно увеличить объём работы). Сейчас оно остаётся элементом научной и инженерной культуры. В бухгалтерских приложениях, кроме того, использование округлений, в том числе промежуточных, может требоваться для защиты от вычислительных ошибок, связанных с конечной разрядностью вычислительных устройств.
Более того, некоторые исследования используют округления возраста для измерения числовой грамотности. Это связано с фактом, что менее образованные люди склонны округлять свой возраст вместо того, чтобы указывать точный. Например, в официальных записях населения с более низким уровнем человеческого капитала чаще встречается возраст 30, чем 31 или 29[4].
Округление при работе с числами ограниченной точности
[править | править код]Реальные физические величины всегда измеряются с некоторой конечной точностью, которая зависит от приборов и методов измерения и оценивается максимальным относительным или абсолютным отклонением неизвестного истинного значения от измеренного, что в десятичном представлении значения соответствует либо определённому числу значащих цифр, либо определённой позиции в записи числа, все цифры после (правее) которой являются незначащими (лежат в пределах погрешности измерения). Сами измеренные параметры записываются с таким числом знаков, чтобы все цифры были надёжными, возможно, последняя — сомнительной. Погрешность при математических операциях с числами ограниченной точности сохраняется и изменяется по известным математическим законам, поэтому когда в дальнейших вычислениях возникают промежуточные значения и результаты с больши́м числом цифр, из этих цифр только часть являются значимыми. Остальные цифры, присутствуя в значениях, фактически не отражают никакой физической реальности и лишь отнимают время на вычисления. Вследствие этого промежуточные значения и результаты при вычислениях с ограниченной точностью округляют до того количества знаков, которое отражает реальную точность полученных значений. На практике обычно рекомендуется при длинных «цепочных» ручных вычислениях сохранять в промежуточных значениях на одну цифру больше. При использовании компьютера промежуточные округления в научно-технических приложениях чаще всего теряют смысл, и округляется только результат.
Так, например, если задана сила 5815 гс с точностью до грамма силы и длина плеча 1,40 м с точностью до сантиметра, то момент силы в кгс по формуле , в случае формального расчёта со всеми знаками, окажется равным: 5,815 кгс • 1,4 м = 8,141 кгс•м. Однако если учесть погрешность измерения, то мы получим, что предельная относительная погрешность первого значения составляет 1/5815 ≈ 1,7•10−4, второго — 1/140 ≈ 7,1•10−3, относительная погрешность результата по правилу погрешности операции умножения (при умножении приближённых величин относительные погрешности складываются) составит 7,3•10−3, что соответствует максимальной абсолютной погрешности результата ±0,059 кгс•м! То есть в реальности, с учётом погрешности, результат может составлять от 8,082 до 8,200 кгс•м, таким образом, в рассчитанном значении 8,141 кгс•м полностью надёжной является только первая цифра, даже вторая — уже сомнительна! Корректным будет округление результата вычислений до первой сомнительной цифры, то есть до десятых: 8,1 кгс•м, или, при необходимости более точного указания рамок погрешности, представить его в виде, округлённом до одного-двух знаков после запятой с указанием погрешности: 8,14 ± 0,06 кгс•м.
Округление рассчитанного значения погрешности
[править | править код]Обычно в окончательном значении рассчитанной погрешности оставляют только первые одну-две значащие цифры. По одному из применяемых правил, если значение погрешности начинается с цифр 1 или 2[5] (по другому правилу — 1, 2 или 3[6]), то в нём сохраняют две значащих цифры, в остальных случаях — одну, например: 0,13; 0,26; 0,3; 0,8. То есть каждая декада возможных значений округляемой погрешности разделена на две части. Недостаток этого правила состоит в том, что относительная погрешность округления изменяется значительным скачком при переходе от числа 0,29 к числу 0,3. Для устранения этого предлагается каждую декаду возможных значений погрешности делить на три части с менее резким изменением шага округления. Тогда ряд разрешённых к употреблению округлённых значений погрешности получает вид:
- 0,10; 0,12; 0,14; 0,16; 0,18;
- 0,20; 0,25; 0,30; 0,35; 0,40; 0,45;
- 0,5; 0,6; 0,7; 0,8; 0,9; 1,0.
Однако при использовании такого правила последние цифры самого результата, оставляемые после округления, также должны соответствовать приведённому ряду[5].
Пересчёт значений физических величин
[править | править код]Пересчёт значения физической величины из одной системы единиц в другую должен производиться с сохранением точности исходного значения. Для этого исходное значение в одних единицах следует умножить (разделить) на переводной коэффициент, часто содержащий большое количество значащих цифр, и округлить полученный результат до количества значащих цифр, обеспечивающего точность исходного значения. Например, при пересчёте значения силы 96,3 тс в значение, выраженное в килоньютонах (кН), следует умножить исходное значение на переводной коэффициент 9,80665 (1 тс = 9,80665 кН). В результате получается значение 944,380395 кН, которое необходимо округлить до трёх значащих цифр. Вместо 96,3 тс получаем 944 кН[7].
Эмпирические правила арифметики с округлениями
[править | править код]В тех случаях, когда нет необходимости в точном учёте вычислительных погрешностей, а требуется лишь приблизительно оценить количество точных цифр в результате расчёта по формуле, можно пользоваться набором простых правил округлённых вычислений[8]:
- Все исходные значения округляются до реальной точности измерений и записываются с соответствующим числом значащих цифр, так, чтобы в десятичной записи все цифры были надёжными (допускается, чтобы последняя цифра была сомнительной). При необходимости значения записываются со значащими правыми нулями, чтобы в записи указывалось реальное число надёжных знаков (например, если длина в 1 м реально измерена с точностью до сантиметров, записывается «1,00 м», чтобы было видно, что в записи надёжны два знака после запятой), или точность явно указывается (например, 2500±5 м — здесь надёжными являются только десятки, до них и следует округлять).
- Промежуточные значения округляются с одной «запасной» цифрой.
- При сложении и вычитании результат округляется до последнего десятичного знака наименее точного из параметров (например, при вычислении значения 1,00 м + 1,5 м + 0,075 м результат округляется до десятых метра, то есть до 2,6 м). При этом рекомендуется выполнять вычисления в таком порядке, чтобы избегать вычитания близких по величине чисел и производить действия над числами по возможности в порядке возрастания их модулей.
- При умножении и делении результат округляется до наименьшего числа значащих цифр, которое имеют множители или делимое и делитель. Например, если тело при равномерном движении прошло дистанцию 2,5⋅103 метров за 635 секунд, то при вычислении скорости результат должен быть округлён до 3,9 м/с, поскольку одно из чисел (расстояние) известно лишь с точностью до двух значащих цифр.
- Важное замечание: если один операндов при умножении или делитель при делении является по смыслу целым числом (то есть не результатом измерений непрерывной физической величины с точностью до целых единиц, а, например, количеством или просто целой константой), то количество значащих цифр в нём на точность результата операции не влияет, и оставляемое число цифр определяется только вторым операндом. Например, кинетическая энергия тела массой 0,325 кг, движущегося со скоростью 5,2 м/с, равна Дж — округляется до двух знаков (по количеству значащих цифр в значении скорости), а не до одного (делитель 2 в формуле), так как значение 2 по смыслу — целая константа формулы, она является абсолютно точной и не влияет на точность вычислений (формально такой операнд можно считать «измеренным с бесконечным числом значащих цифр»).
- При возведении в степень в результате вычисления следует оставлять столько значащих цифр, сколько их имеет основание степени.
- При извлечении корня любой степени из приближённого числа в результате следует брать столько значащих цифр, сколько их имеет подкоренное число.
- При вычислении значения функции требуется оценить значение модуля производной этой функции в окрестности точки вычисления. Если , то результат функции точен до того же десятичного разряда, что и аргумент. В противном случае результат содержит меньше точных десятичных разрядов на величину , округлённую до целого в большую сторону.
Несмотря на нестрогость, приведённые правила достаточно хорошо работают на практике, в частности, из-за достаточно высокой вероятности взаимопогашения ошибок, которая при точном учёте погрешностей обычно не учитывается.
Ошибки
[править | править код]Довольно часто встречаются злоупотребления некруглыми числами. Например:
- Пользователи стрелочных приборов иногда размышляют так: «стрелка остановилась между 5,5 и 6 ближе к 6, пусть будет 5,8» — такое рассуждение некорректно (градуировка прибора, как правило, соответствует его реальной точности, правильным будет зафиксировать значение «6»).
Интересный факт
[править | править код]- Карл Фридрих Гаусс отмечал: «Недостатки математического образования с наибольшей отчётливостью проявляются в чрезмерной точности численных расчётов»[9].
См. также
[править | править код]Примечания
[править | править код]- ↑ 1 2 Floor Function — from Wolfram MathWorld . Дата обращения: 8 августа 2015. Архивировано 5 сентября 2015 года.
- ↑ Архивированная копия (неопр.). Дата обращения: 8 августа 2015. Архивировано 4 июня 2009 года.Архивированная копия . Дата обращения: 8 августа 2015. Архивировано из оригинала 4 июня 2009 года.
- ↑ Кнут Д. Э. Искусство программирования. Том 1. Основные алгоритмы = The Art of Computer Programming. Volume 1. Fundamental Algorithms / под ред. С. Г. Тригуб (гл. 1), Ю. Г. Гордиенко (гл. 2) и И. В. Красикова (разд. 2.5 и 2.6). — 3. — Москва: Вильямс, 2002. — Т. 1. — 720 с. — ISBN 5-8459-0080-8.
- ↑ A’Hearn, B., J. Baten, D. Crayen (2009). «Quantifying Quantitative Literacy: Age Heaping and the History of Human Capital», Journal of Economic History 69, 783—808.
- ↑ 1 2 Округление результатов измерений . www.metrologie.ru. Дата обращения: 10 августа 2019. Архивировано 16 августа 2019 года.
- ↑ 1.3.2. Правила округления значения погрешности и записи . StudFiles. Дата обращения: 10 августа 2019. Архивировано 10 августа 2019 года.
- ↑ Правила пересчета значений физических величин | Единицы физических величин . sv777.ru. Дата обращения: 8 августа 2019. Архивировано 8 августа 2019 года.
- ↑ В. М. Заварыкин, В. Г. Житомирский, М. П. Лапчик. Техника вычислений и алгоритмизация: Вводный курс: Учебное пособие для студентов педагогических институтов по физико-математическим специальностям. — М: Просвещение, 1987. 160 с.: ил.
- ↑ цит. по В. Гильде, З. Альтрихтер. «С микрокалькулятором в руках». Издание второе. Перевод с немецкого Ю. А. Данилова. М:Мир, 1987, стр. 64.
Литература
[править | править код]- Генри С. Уоррен, мл. Глава 3. Округление к степени 2 // Алгоритмические трюки для программистов = Hacker's Delight. — М.: «Вильямс», 2007. — С. 288. — ISBN 0-201-91465-4.
Ссылки
[править | править код]- Стандарт СЭВ СТ СЭВ 543-77 "Числа. Правила записи и... | Докипедия . dokipedia.ru. Дата обращения: 8 августа 2019. Архивировано 8 августа 2019 года.