Правильное округление чисел

Приближенные значения чисел. округление чисел

Вопрос-ответ:

Что такое математическое округление?

Математическое округление — это процесс приведения числа к наиболее близкому целому значению. В общем случае, если дробная часть числа больше или равна 0.5, то число округляется в большую сторону, иначе — в меньшую.

Зачем нужно математическое округление?

Математическое округление используется в множестве задач и приложений, где нужно привести числа к более удобному виду. Например, в бухгалтерии, финансовых расчетах или науке.

Как округлить число до заданного количества знаков после запятой?

Чтобы округлить число до заданного количества знаков после запятой, нужно умножить число на 10 в степени, равной количеству знаков, до которых требуется округлить, затем округлить полученное число и разделить его на 10 в той же степени, на которую умножили изначальное число.

Как округлить до целого числа?

Чтобы округлить число до целого числа, нужно воспользоваться функцией округления, которая округляет число в соответствии с правилами математического округления. В большинстве языков программирования эта функция называется round().

Как округлить число до ближайшего меньшего?

Чтобы округлить число до ближайшего меньшего, нужно использовать функцию floor(). Она округляет число до ближайшего меньшего целого числа.

Как округлить число до ближайшего большего?

Чтобы округлить число до ближайшего большего, нужно использовать функцию ceil(). Она округляет число до ближайшего большего целого числа.

Может ли математическое округление привести к ошибкам в вычислениях?

Да, в случае, когда округление производится на каждом шаге вычисления, это может привести к накоплению ошибок

Поэтому важно использовать математическое округление осознанно и только там, где оно действительно необходимо

Варианты округления 0,5 к ближайшему целому

Отдельного описания требуют правила округления для специальных случаев, когда (N+1)-й знак = 5, а последующие знаки равны нулю. Есть следующие варианты правила округления до ближайшего целого для данного случая:

  • математическое округление — округление всегда в большую сторону (по модулю); предыдущий разряд всегда будет увеличиваться на единицу;
  • округление до ближайшего чётного — число округляют к ближайшему чётному числу соответственно; 2,5 при округлении станет 2, 3,5 станет 4, 1,5 также будет равняться 2;
  • случайное округление — числа округляются в случайном порядке в большую или меньшую сторону, но с равной вероятностью (что используется в статистике);
  • поочередное округление (чередующееся округление) — числа округляются поочередно в большую или меньшую сторону

Математическое округление имеет довольно фатальный недостаток в виде накопления ошибки округления; это приводит к тому, что значения числа или чисел после процедуры округления становятся больше, и это искажает точность. Например: округление до целых денежных сумм или веса предметов. Если в реестрах строк окажутся значения после запятой, что больше 50, то и итоговая сумма станет на 50 больше.

Остальные три варианта как раз и нужны для того, чтобы ошибка округления не сказалась на точности расчётов. При округлении до ближайшего чётного ошибки округления взаимно погашаются (правда, это верно лишь тогда, когда набор округляемых чисел обладает свойствами случайного ряда).

Два последних варианта предполагают, что одна половина данных будет округлена в другую сторону, а другая — в другую, что повысит точность расчётов. Но и у них есть два недостатка:

  • случайное округление требует для каждой строки создавать числа. Для замены каждого числа требуется проводить сложение, деление, умножение и вычитание; если чисел много — то работа с ними сильно замедляется;
  • чередующееся округление требует сохранять «флаг», показывающий в какую из сторон было произведено округление в последний раз и при каждом округлении этот самый «флаг» переключать. Если чисел много, что нагрузка из-за вычислительных процессов возрастает, что также замедляет работу со значениями.

Правила округления до двух значащих цифр

Округление числа до двух значащих цифр является простым и широко используется в математике, физике, экономике и других науках. Правила округления могут отличаться, но в общем случае, если третья значащая цифра меньше 5, то число округляется вниз, а если больше или равна 5, то вверх. Если же третья цифра равна 5, то округление происходит в зависимости от четвертой цифры — если она не равна 0, то число округляется вверх, а если равна 0, то округление происходит вниз.

Например, число 3.14159 округляется до 3.14, так как третья цифра (1) меньше 5. А число 3.14567 будет округлено до 3.15, так как третья цифра (5) больше или равна 5, а четвертая цифра (6) не равна 0.

Важно понимать, что округление до двух значащих цифр может приводить к небольшим ошибкам в расчетах, особенно когда числа малы или близки к 0.001. Поэтому, при необходимости точных расчетов, следует использовать другие способы округления или более точные формулы

Также стоит учитывать, что округление до двух значащих цифр может влиять на результаты дальнейших расчетов и анализа данных. Например, при сравнении двух чисел, округленных до двух значащих цифр, может быть ошибочно считать их равными, если на самом деле они различаются на очень малую величину.

В целом, правила округления до двух значащих цифр являются важным инструментом в математических и научных расчетах, но требуют внимательного и осторожного использования

Способы округления чисел

Для округления чисел придумано много способов, они не лишены недостатков, однако часто используются для решения задач. Разберёмся в тонкостях каждого из них.

Если используется стандартная библиотека math, то в начале кода её необходимо подключить. Сделать это можно, например, с помощью инструкции: .

math.ceil() — округление чисел в большую сторону

Функция получила своё имя от термина «ceiling», который используется в математике для описания числа, которое больше или равно заданному.

Любая дробь находится в целочисленном интервале, например, 1.2 лежит между 1 и 2. Функция определяет, какая из границ интервала наибольшая и записывает её в результат округления.

Пример:

math.ceil(5.15) # = 6
math.ceil(6.666) # = 7
math.ceil(5) # = 5

Важно помнить, что функция определяет наибольшее число с учётом знака. То есть результатом округления числа -0.9 будет 0, а не -1.

math.floor() — округление чисел в меньшую сторону

Функция округляет дробное число до ближайшего целого, которое меньше или равно исходному. Работает аналогично функции , но с округлением в противоположную сторону.

Пример:

math.floor(7.9) # = 7
math.floor(9.999) # = 9
math.floor(-6.1) # = -7

math.trunc() — отбрасывание дробной части

Возвращает целое число, не учитывая его дробную часть. То есть никакого округления не происходит, Python просто забывает о дробной части, приводя число к целочисленному виду.

Примеры:

math.trunc(5.51) # = 5
math.trunc(-6.99) # = -6

Избавиться от дробной части можно с помощью обычного преобразования числа к типу int. Такой способ полностью эквивалентен использованию .

Примеры:

int(5.51) # = 5
int(-6.99) # = -6

Нормальное округление

Python позволяет реализовать нормальное арифметическое округление, использовав функцию преобразования к типу int.

И хотя работает по другому алгоритму, результат её использования для положительных чисел полностью аналогичен выводу функции floor(), которая округляет числа «вниз». Для отрицательных аналогичен функции ceil().

Примеры:

math.floor(9.999) # = 9
int(9.999) # = 9
math.ceil(-9.999) # = -9
int(-9.999) # = -9

Чтобы с помощью функции int() округлить число по математическим правилам, необходимо добавить к нему 0.5, если оно положительное, и -0.5, если оно отрицательное.

Тогда операция принимает такой вид: int(num + (0.5 if num > 0 else -0.5)). Чтобы каждый раз не писать условие, удобно сделать отдельную функцию:

def int_r(num):
    num = int(num + (0.5 if num > 0 else -0.5))
    return num

Функция работает также, как стандартная функция округление во второй версии Python (арифметическое округление).

Примеры:

int_r(11.5) # = 12
int_r(11.4) # = 11
int_r(-0.991) # = -1
int_r(1.391) # = 1

round() — округление чисел

round() — стандартная функция округления в языке Python. Она не всегда работает так, как ожидается, а её алгоритм различается в разных версиях Python.

В Python 2

Во второй версии Python используется арифметическое округление. Оно обладает постоянно растущей погрешностью, что приводит к появлению неточностей и ошибок.

Увеличение погрешности вызвано неравным количеством цифр, определяющих, в какую сторону округлять. Всего 4 цифры на конце приводят к округлению «вниз», и 5 цифр к округлению «вверх».

Помимо этого, могут быть неточности, например, если округлить число 2.675 до второго знака, получится число 2.67 вместо 2.68. Это происходит из-за невозможности точно представить десятичные числа типа «float» в двоичном коде.

В Python 3

В третьей версии Python используется банковское округление. Это значит, что округление происходит до самого близкого чётного.

Такой подход не избавляет от ошибок полностью, но уменьшает шанс их возникновения и позволяет программисту добиться большей точности при вычислениях.

Примеры:

round(3.5) # = 4
round(9.5) # = 10
round(6.5) # = 6
round(-6.5) # = -6
round(-7.5) # = -8

Но если вам по каким то причинам нужно округление как в Python 2, то можно воспользоваться функцией написанной нами выше на основе приведения к целому числу.

Округление до сотых

У функции есть ещё один аргумент. Он показывает до какого количества знаков после запятой следует округлять. Таким образом, если нам надо в Python округлить до сотых, этому параметру следует задать значение 2.

Пример округления до нужного знака:

round(3.555, 2) # = 3.56
round(9.515,1) # = 9.5
round(6.657,2) # = 6.66

Округление в Excel с помощью формата ячеек

Такой вариант уместно применять в том случае, когда нужно изменить вид числа на мониторе. Например, это может происходить при необходимости распечатать таблицу или при подготовке к презентации для упрощения восприятия изложенной информации.

Если же ячейка будет в дальнейшем использоваться для расчетов, то Excel выполняет операции с изначальными показателями, а не с теми, которые отображаются в округленном виде. Например, если программа сократит число 29,3 до 29, то при суммировании учитывается первый вариант, то есть не 29 + 1 = 30, а 29,3 + 1 = 30,3.

Разберем данный способ на примере двух чисел. Выделим их в общий диапазон и на вкладке «Главная» нажмем на стрелку справа от окна форматов.

Кликаем на кнопку «Другие числовые форматы».


Округление в Excel с помощью формата ячеек

На экране откроется окно форматирования ячеек. Программа автоматически устанавливает общий формат значений, при котором округление чисел невозможно.

Для того чтобы провести операцию, необходимо выполнить его изменение на числовой, денежный или финансовый.

Для вас подарок! В свободном доступе до
28.04

Скачайте ТОП-10
нейросетей, которые помогут облегчить вашу работу

Чтобы получить подарок, заполните информацию в открывшемся окне

Перейти

Скачать
файл

Для совершения округления в Excel нужно выбрать числовой формат. Далее в разделе «Число десятичных знаков» вводим «0». Нажимаем «ОК».

Округление числа в Excel

Изменение количества знаков после запятой без изменения значения

На листе

  1. ​ формата, а затем​ для всех ячеек​

  2. ​ этого также можно​ этом вместо делителя​ абсолютные значения (значения​​В поле​​Предположим, что вы хотите​​ исходное числовое значение​​ превышают сотни тысяч.​​ где показатели достигают​

    ​ и тысячи), чтобы​​ этом случае.​ ​ изменении размера ячейки,​

Во встроенном числовом формате

  1. ​ формул для сложения​​ т.д. Какими способами​​Нужно округлить числа​​Excel​​ применить его ко​ на новый лист),​ применять функцию​ 0,5 используется 5.​​ без знака «минус»).​​Число десятичных знаков​

  2. ​ округлить число до​​ без знака минуса​​ Если возникнет необходимость​​ миллионов, каждое значение​​ не ухудшить читабельность​​«МУМНОЖ», «МОПРЕД», «МОБР»​​ количество разрядов также​​ вычислений других функций.​​ произвести такие подсчеты,​​ не до целого​​, чтобы последняя цифра​ всем числам на​

  3. ​ а затем в​​ОКРУГЛТ​​В общем при округлении​ После округления знак​

Округление числа вверх

​введите требуемое число​ ближайшего целого, так​ и запятой.​ округлить все такие​ ниже определенного числа​ данных.​для операций с​

Округление числа до указанного количества значимых разрядов

​ числа, а до​ была «9»​ листе.​

​ приложении Excel автоматически​.​​ числа без дробной​​ «минус» применяется повторно.​​ знаков после запятой.​​ как десятичные значения​​В данном случаи функция​​ исходные значения до​ значащих цифр –​Например, вместо того чтобы​ числовыми массивами, матрицами.​ большую, при увеличении​ и выбирая аргументы.​ «Как посчитать количество​

​ целого с половиной.​.​На вкладке​ откроет меньшего числа​Примечание:​ части (целого числа)​ Хотя это может​Используйте функцию ОКРУГЛВВЕРХ. В​ вам не важны,​ ДЛСТР возвращает значение​ одной и той​ не существенно.​ в презентации отчета​

  • ​«АГРЕГАТ», «ПРОМЕЖУТОЧНЫЕ»​ ячейки, так и​ Позволяет складывать числа,​ символов в ячейке​ Например, число 2,3​Нам нужно округлить​Главная​ десятичных знаков, номер​Мы стараемся как​ необходимо вычесть длину​ показаться нелогичным, именно​​ некоторых случаях может​​ или представить число​ 4. Если из​ же значащей цифры​Ниже на рисунке показано,​ указывать сумму 883​для получения итоговых​ в меньшую, при​ расположенные в едином​ Excel».​ до числа 2,5​ последнюю цифру в​нажмите кнопку​ не превышала ширину​

  • ​ можно оперативнее обеспечивать​ числа из нужного​​ так выполняется округление.​​ потребоваться использовать функции​ в виде степени​ числа -2330,45 убрать​​ используя при этом​​ как составить формулу,​

  • ​ 788 $, можно​​ и промежуточных значений.​​ ее уменьшении, сторону.​ массиве (части столбца,​В этой статье мы​ или, число 2,7​ числе до цифры​рядом с надписью​ пустую ячейку. Число​ вас актуальными справочными​

  • ​ количества значимых разрядов.​​ Например, при использовании​​ ЧЁТН и НЕЧЁТ​ 10, чтобы упростить​ знак минус и​ одну и туже​ которая округляет миллионные​

  • ​ округлить до одной​Логарифмы, линейные логарифмы, десятичные​Как видите, округление в​ строки), нескольких несмежных​ рассмотрим одно из​ – до числа​ 9. Например, число​число​ в ячейке A1​ материалами на вашем​​ Например, чтобы округлить​​ функции​​ для округления вверх​​ приблизительные вычисления. Существует​ числа после запятой​ формулу (как обычно​ числовые значения до​ значащей цифры. Это​

Округление числа до заданного кратного

​ логарифмы.​ Excel не такая​ ячейках, одном двухмерном​ офисных приложений MS​ 3,5. Чтобы всегда​ 676 нужно округлить​.​ ниже округленным, но​ языке. Эта страница​ 2345678 вниз до​ОКРУГЛВНИЗ​ до ближайшего четного​ несколько способов округления​ мы получим 4​ принято в Excel).​ заданного числа значащих​ значит, что после​Статистические. «БЕТАОБР»​ уж и сложная​ массиве, массиве смежных​ Office Excel.​

​ была после запятой,​ до числа 679.​В списке​ по-прежнему отображается в​ переведена автоматически, поэтому​ 3 значимых разрядов,​для округления числа​​ или нечетного числа.​​ чисел.​

support.office.com>

Вопрос-ответ:

Что такое значащие цифры?

Значащие цифры – это цифры числа, которые вносят весомый вклад в его значимость. Они не являются нулями, стоящими перед числом и не являются нулями на конце числа, если после них нет других ненулевых цифр. Например, в числе 2050 есть две значащие цифры – 2 и 5.

Зачем нужны значащие цифры в математике?

Значащие цифры используются для облегчения записи больших чисел, приближенных вычислений, а также для оценки точности измерений. Они помогают уменьшить количество цифр в числах, не теряя при этом существенной информации. Также значащие цифры позволяют сравнивать числа и оценивать разницу между ними.

Как округляются числа с несколькими значащими цифрами?

При округлении числа с несколькими значащими цифрами следующие цифры, которые стоят после знака округления, определяют, как округляется последняя значащая цифра. Если эта цифра меньше или равна 4, то последняя значащая цифра уменьшается на единицу, а все следующие цифры удаляются. Если эта цифра больше или равна 5, то последняя значащая цифра увеличивается на единицу, а все следующие цифры удаляются.

Влияют ли на количество значащих цифр операции с числами?

Да, операции с числами могут влиять на количество значащих цифр. При выполнении операций с числами нам необходимо сохранять столько значащих цифр, сколько есть в исходных числах. Например, при умножении двух чисел с двумя значащими цифрами мы получим результат с четырьмя значащими цифрами. При вычитании/сложении чисел количество значащих цифр может увеличиваться или уменьшаться в зависимости от того, какие цифры будут сопоставлены при выполнении операции.

Как использовать значащие цифры для оценки точности измерений?

Значащие цифры используются для вычисления точности измерений. При использовании значащих цифр мы можем определить диапазон, в котором может находиться наше измерение. Например, при измерении длины у каждого инструмента есть свой предел точности, который указывает на наименьшее измеряемое расстояние. Эта величина определяется количеством значащих цифр в измеряемом расстоянии. Кроме того, значащие цифры используются для оценки ошибок измерения и устранения их на практике.

Как использовать значащие цифры при вычислениях?

При выполнении приближенных вычислений с помощью значащих цифр мы можем получить более точный результат. При округлении чисел до определенного числа значащих цифр мы уменьшаем погрешность вычислений. Если мы проводим операции с числами разной точности, мы можем получить большее количество значащих цифр в итоговом результате. Также можно применять приближенные значения чисел, сохраняя при этом значащие цифры. Это позволяет быстрее выполнять вычисления и приближаться к точному результату.

Способы записи числа

Представьте, что нам надо записать число 1 миллиард. Самый очевидный путь:

Мы также можем использовать символ нижнего подчёркивания в качестве разделителя:

Символ нижнего подчёркивания – это «синтаксический сахар», он делает число более читабельным. Движок JavaScript попросту игнорирует между цифрами, поэтому в примере выше получается точно такой же миллиард, как и в первом случае.

Однако в реальной жизни мы в основном стараемся не писать длинные последовательности нулей, так как можно легко ошибиться. Укороченная запись может выглядеть как или для 7 миллиардов 300 миллионов. Такой принцип работает для всех больших чисел.

В JavaScript, чтобы укоротить запись числа, мы можем добавить к нему букву и указать необходимое количество нулей:

Другими словами, умножает число на с указанным количеством нулей.

А сейчас давайте запишем что-нибудь очень маленькое. К примеру, 1 микросекунду (одна миллионная секунды):

В этом случае нам также поможет . Если мы хотим избежать записи длинной последовательности из нулей, мы можем сделать так:

Если мы подсчитаем количество нулей в , их будет 6. Естественно, верная запись .

Другими словами, отрицательное число после подразумевает деление на с указанным количеством нулей:

Шестнадцатеричные числа широко используются в JavaScript для представления цветов, кодировки символов и многого другого. Естественно, есть короткий стиль записи: , после которого указывается число.

Например:

Двоичные и восьмеричные числа используются не так часто, но они также поддерживаются: для двоичных и для восьмеричных:

Есть только 3 системы счисления с такой поддержкой. Для других систем счисления мы рекомендуем использовать функцию (рассмотрим позже в этой главе).

Округление десятичных дробей до десятых, сотых и т.д.

Числа можно округлять и до других разрядов.

Марина забыла дома линейку. В школе она свернула тетрадный листок в клеточку в несколько раз, и на получившейся полоске бумаги сделала отметины и написала цифры. Марина знала, что одна клеточка – это $0.5$ см. У неё получилась линейка.

Правда, линейка получилась не очень точная. Например, когда ей понадобилось измерить отрезок, оказалось, что делений не хватает.

Рисунок 5

Можете ли сказать, чему приближённо равен отрезок АВ?

Показать ответ

Скрыть

Отрезок АВ приближённо равен $8.5$ см.

Как правильно округлить десятичную дробь

  1. Выбрать в записи числа разряд, до которого производится округление (можно подчеркнуть его для удобства)
  2. Выделить число справа от выбранного разряда
  3. Если это число справа от подчёркнутой цифры $0, 1, 2, 3$ или $4$, то все цифры, включая данное число, заменить нулями, а цифру разряда, до которой округляли, оставить без изменений
  4. Если число справа от подчёркнутой цифры $5, 6, 7, 8$ или $9$, то также все цифры справа от подчёркнутой заменяем нулями, а к цифре разряда, до которой округляли, увеличиваем на $1$
  5. Если цифры, заменяемые нулями, находятся в дробной части (справа от запятой), то нули не записываются, а просто отбрасываются

Давайте потренируемся. Длина карандаша равна $17.72$ см. Нужно округлить эту дробь до десятых.

Показать решение

Скрыть

Чтобы округлить число $17.\textcolor{blue}{7} \textcolor{red}{2}$ до десятых, нам нужно заменить все цифры после разряда десятых нулями. В нашем случае это одна цифра. Сравним эту цифру с $5. $

$$2 < 5$$

Следовательно, округляем число в меньшую сторону, а число десятых оставляем без изменений.

Рисунок 6

{"questions":,"explanations":,"answer":}},"step":1,"hints":}]}

Округление дробных чисел при переводе обыкновенных дробей в десятичные

При переводе обыкновенных дробей в десятичные иногда мы сталкиваемся с ситуацией, когда дробь не может быть представлена в виде десятичной.

Например, $\frac{1}{6}$. Если мы разделим $1$ на $6$, калькулятор покажет вот такое число:

Рисунок 7

Известно, что дробь может быть переведена в десятичную только в том случае, если её знаменатель раскладывается на простые множители $2$ и $5. $

Получается, мы не можем представить дробь $\frac{1}{6}$ в виде десятичной. Мы можем только найти приближённое значение.

Например, мы можем округлить число на рисунке 5 до тысячных.

Как это можно сделать?

Скрыть

Выделим число, до которого нужно округлить (тысячные) и то, которое следует за ним (десятитысячные).

$0.16 \textcolor{blue}{6} \textcolor{red}{6}66$

Посмотрим на число десятитысячных. Это $6. $

$$6 > 5$$

Следовательно, мы берём число тысячных и увеличиваем его на $1. $

У нас получается $0.167$

Рисунок 8

{"questions":[{"content":"Разделите на калькуляторе $1$ на $9. $ Округлите полученную дробь до десятитысячных. `input-1`","widgets":{"input-1":{"type":"input","answer":"0.1111"}},"step":1,"calc":1,"hints":["Сначала выполним деление. У нас получится $0.111111$","Теперь найдём десятитысячную. Это четвёртое число после запятой. Смотрим на пятое число. Это $1$. <br />$1 < 5$, следовательно, мы можем просто отбросить все цифры после десятитысячной.","Приближённым значением будет $0.1111$"]}]}

Приближённые значения приходят к нам на помощь, когда вычислить точное значение не представляется возможным. Но всё-таки в рамках школьного курса математики мы чаще имеем дело с точными цифрами, и, если есть возможность получить точный ответ, следует стараться это сделать.

Округление чисел

Для нахождения приближенного значения применяется такое действие как округление чисел.

Слово «округление» говорит само за себя. Округлить число значит сделать его круглым. Круглым называется число, которое оканчивается нулём. Например, следующие числа являются круглыми:

10, 20, 30, 100, 300, 700, 1000

Любое число можно сделать круглым. Процедуру, при которой число делают круглым, называют округлением числá.

Мы уже занимались «округлением» чисел, когда делили большие числа. Напомним, что для этого мы оставляли без изменения цифру, образующую старший разряд, а остальные цифры заменяли нулями. Но это были лишь наброски, которые мы делали для облегчения деления. Своего рода лайфхак. По факту, это даже не являлось округлением чисел. Именно поэтому в начале данного абзаца мы взяли слово округление в кавычки.

На самом деле, суть округления заключается в том, чтобы найти ближайшее значение от исходного. При этом, число может быть округлено до определённого разряда — до разряда десятков, разряда сотен, разряда тысяч.

Рассмотрим простой пример на округление. Дано число 17. Требуется округлить его до разряда десятков.

Не забегая вперёд попробуем понять, что означает «округлить до разряда десятков». Когда говорят округлить число 17, то надо понимать, что от нас требуют найти ближайшее круглое число от числá 17. Причём в ходе этого поиска возможно изменения коснутся и той цифры, которая располагается в разряде десятков числá 17 (т.е цифры 1).

Предстáвим числа от 10 до 20 с помощью следующего рисунка:

На рисунке видно, что для числá 17 ближайшее круглое число это число 20. Значит ответ к задаче таким и будет: «17 приближённо равно 20″

17 ≈ 20

Мы нашли приближённое значение для 17, то есть округлили его до разряда десятков. Видно, что после округления в разряде десятков появилась новая цифра 2.

Попробуем найти приближённое число для числа 12. Для этого снова предстáвим числа от 10 до 20 с помощью рисунка:

На рисунке видно, что ближайшее круглое число для 12 это число 10. Значит ответ к задаче таким и будет: 12 приближённо равно 10

12 ≈ 10

Мы нашли приближённое значение для 12, то есть округлили его до разряда десятков. В этот раз цифра 1, которая стояла в разряде десятков в числе 12, не пострадала от округления. Почему так получилось мы расскажем позже.

Попробуем найти ближайшее число для числá 15. Снова предстáвим числа от 10 до 20 с помощью рисунка:

На рисунке видно, что число 15 одинаково удалено от круглых чисел 10 и 20. Возникает вопрос: которое из этих круглых чисел будет приближённым значением для числа 15? Для таких случаев условились принимать бóльшее число за приближённое. 20 больше чем 10, поэтому приближённое значение для 15 будет число 20

15 ≈ 20

Округлять можно и большие числа. Естественно, для них делать рисунки и изображать числа не представляется возможным. Для них существует свой способ. Например, округлим число 1456 до разряда десятков.

Итак, мы должны округлить 1456 до разряда десятков. Разряд десятков начинается на пятёрке:

Теперь о существовании первых цифр 1 и 4 временно забываем. Остается число 56

Теперь смотрим, какое круглое число находится ближе к числу 56. Очевидно, что ближайшее круглое число для 56 это число 60. Значит заменяем число 56 на число 60

Значит при округлении числа 1456 до разряда десятков полýчим 1460

1456 ≈ 1460

Видно, что после округления числа 1456 до разряда десятков, изменения коснулись и самогó разряда десятков. В новом полученном числе в разряде десятков теперь располагается цифра 6, а не 5.

Округлять числа можно не только до разряда десятков. Округлять число можно до разряда сотен, тысяч, десятков тысяч и так далее.

После того, как станóвится ясно, что округление это ни что иное как поиск ближáйшего числá, можно применять готовые правила, которые значительно облегчают округление чисел.

Алгоритм округления чисел

Процесс округления числа в основном означает нахождение числа с меньшим количеством цифр, значение которого близко к значению исходного числа. Например, интуитивно понятно, что 6,1 округлится до 6, поскольку оно «ближе» к 6, чем к 7. Аналогично, 6,2 , 6,3 и 6,4 округлятся до 6. Тогда как 6,9 округлится до 7, так как он ближе к 7, чем к 6. То же самое с 6,8 , 6,7 и 6,6. Но что делать с 6,5? Он находится ровно посередине между 6 и 7. Существует несколько различных правил округления, здесь мы рассмотрим наиболее распространенный метод. В наиболее распространенном методе округления 5 округляется «вверх», так что 6,5 округляется до 7. Алгоритм округления чисел в этом случае состоит из следующих шагов:

  1. Определите количество значащих цифр, которое вы хотите сохранить.
  2. Посмотрите на последнюю цифру, которую вы сохраняете. Если следующая цифра меньше 5, оставьте последнюю цифру прежней; если следующая цифра больше или равна 5, увеличьте последнюю значащую цифру на 1.

Например, давайте округлим каждое число до двух значащих цифр: 1015, 876. Начнем с 1015:

  1. Мы хотим округлить до 2 значащих цифр, поэтому последняя цифра, которую мы сохраняем (и не обращаем в 0) — это ноль: 1015 — здесь мы сохраняем жирные цифры, а остальные обращаем в ноль.
  2. Посмотрим на цифру, следующую за нулем — это единица. 1 меньше 5, поэтому последнюю значащую цифру оставляем прежней. Число становится равным \$1\bar{0}00\$. Горизонтальная линия над второй цифрой показывает, что это число округляется до второй значащей цифры.

Теперь давайте посмотрим на 876:

  1. Последняя цифра, которую мы сохраняем — 7, вторая цифра числа: 876 — опять же, мы сохраняем жирные цифры, а остальные превращаем в нули.
  2. Следующая цифра после 7 — 6. 6 больше 5, поэтому к последней сохраненной цифре нужно прибавить 1: 7 + 1 = 8. Итоговое число будет \$8\bar{8}0\$. Здесь также над второй цифрой добавлена горизонтальная черта, чтобы показать, что число было округлено до второй значащей цифры.

Округление десятичных дробей

Алгоритм округления десятичных дробей такой же, как и алгоритм округления целых чисел

Важно отметить, что ведущие нули не являются значащими цифрами, поэтому они не учитываются при выборе последней сохранившейся цифры. Например, давайте округлим каждое число до трех значащих цифр: 9.05675, 0.01234

Начиная с 9,05675, получаем:

  1. Мы хотим округлить до трех значащих цифр, поэтому последняя сохраняемая цифра — 5: 9,05675, где мы сохраняем только жирные цифры.
  2. Смотрим на цифру после 5 и видим, что это 6. 6 больше 5, поэтому последнюю значащую цифру нужно увеличить на 1: 5 + 1 = 6. Итоговое число равно 9,06000. В отличие от целых чисел, нули в конце числа не меняют значение окончательного ответа, поэтому их можно удалить. Окончательный ответ — 9,06.

Теперь рассмотрим 0,01234:

Мы хотим округлить до 3 значащих цифр, поэтому последняя цифра, которую мы оставляем, — 3

Обратите внимание, что первые нули не считаются значащими цифрами: 0,01234, где мы сохраняем только жирные цифры.
Цифра после 3 — 4. 4 меньше 5, поэтому последняя цифра не меняется, и окончательное число равно 0,01230, или 0,0123.

Неточные вычисления

Внутри JavaScript число представлено в виде 64-битного формата IEEE-754. Для хранения числа используется 64 бита: 52 из них используется для хранения цифр, 11 для хранения положения десятичной точки и один бит отведён на хранение знака.

Если число слишком большое, оно переполнит 64-битное хранилище, JavaScript вернёт бесконечность:

Наиболее часто встречающаяся ошибка при работе с числами в JavaScript – это потеря точности.

Посмотрите на это (неверное!) сравнение:

Да-да, сумма и не равна .

Странно! Что тогда, если не ?

Но почему это происходит?

Число хранится в памяти в бинарной форме, как последовательность бит – единиц и нулей. Но дроби, такие как , , которые выглядят довольно просто в десятичной системе счисления, на самом деле являются бесконечной дробью в двоичной форме.

Другими словами, что такое ? Это единица делённая на десять — , одна десятая. В десятичной системе счисления такие числа легко представимы, по сравнению с одной третьей: , которая становится бесконечной дробью .

Деление на гарантированно хорошо работает в десятичной системе, но деление на – нет. По той же причине и в двоичной системе счисления, деление на обязательно сработает, а становится бесконечной дробью.

В JavaScript нет возможности для хранения точных значений 0.1 или 0.2, используя двоичную систему, точно также, как нет возможности хранить одну третью в десятичной системе счисления.

Числовой формат IEEE-754 решает эту проблему путём округления до ближайшего возможного числа. Правила округления обычно не позволяют нам увидеть эту «крошечную потерю точности», но она существует.

Пример:

И когда мы суммируем 2 числа, их «неточности» тоже суммируются.

Вот почему – это не совсем .

Не только в JavaScript

Справедливости ради заметим, что ошибка в точности вычислений для чисел с плавающей точкой сохраняется в любом другом языке, где используется формат IEEE 754, включая PHP, Java, C, Perl, Ruby.

Можно ли обойти проблему? Конечно, наиболее надёжный способ — это округлить результат используя метод toFixed(n):

Также можно временно умножить число на 100 (или на большее), чтобы привести его к целому, выполнить математические действия, а после разделить обратно. Суммируя целые числа, мы уменьшаем погрешность, но она всё равно появляется при финальном делении:

Таким образом, метод умножения/деления уменьшает погрешность, но полностью её не решает.

Забавный пример

Попробуйте выполнить его:

Причина та же – потеря точности. Из 64 бит, отведённых на число, сами цифры числа занимают до 52 бит, остальные 11 бит хранят позицию десятичной точки и один бит – знак. Так что если 52 бит не хватает на цифры, то при записи пропадут младшие разряды.

Интерпретатор не выдаст ошибку, но в результате получится «не совсем то число», что мы и видим в примере выше. Как говорится: «как смог, так записал».

Два нуля

Другим забавным следствием внутреннего представления чисел является наличие двух нулей: и .

Все потому, что знак представлен отдельным битом, так что, любое число может быть положительным и отрицательным, включая нуль.

В большинстве случаев это поведение незаметно, так как операторы в JavaScript воспринимают их одинаковыми.

Понравилась статья? Поделиться с друзьями:
Твой Советник
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: