Калькулятор округления
Результат
Округлённое значение
- Усечённое значение (до того же разряда)
- 1234
Округление заменяет число на близкое, которое проще записать, и в нём есть два решения, которые обычно принимают не замечая. Первое — до чего округлять: до ближайшего целого, до ближайшего десятка, до ближайшей сотой или до заданного числа значащих цифр. Второе — что делать, когда значение стоит ровно посередине, и именно здесь два разумных соглашения расходятся. Округление половины от нуля уводит половину от нуля, поэтому 2,5 становится 3, а −2,5 становится −3; так учат в школе, и это же большинство людей имеет в виду под округлением. Усечение, наоборот, движет значение к нулю, поэтому 2,5 становится 2, а −2,5 становится −2; его проще определить, и именно так в действительности поступает немалая часть программ. Эта страница принимает разряд как ввод и печатает оба результата на этом разряде, поэтому разница видна, а не подразумевается. Сам разряд можно назвать двумя способами. Назвать десятичный разряд — прямой путь: единицы, десятки, сотни, тысячные, вплоть до трёх знаков после запятой в обе стороны. Назвать число значащих цифр — способ, принятый в науке, где счёт идёт от первой ненулевой цифры, а не от запятой, поэтому 1 567 с двумя значащими цифрами — это 1 600: тот же ответ, что и при округлении до ближайшей сотни, но полученный другим путём. Для числа заданной величины эти два способа часто совпадают, и для 1 234,5678 шесть вариантов по значащим цифрам попадают на те же разряды, что и шесть десятичных. Конечные нули сохраняются, потому что они несут информацию: 1 234,6 до одного знака после запятой и 1 234,57 до двух — это разные утверждения о том, насколько точно известно число, и отбрасывание нуля стёрло бы разницу. Второй вывод — усечённое значение на том же разряде: это самый дешёвый способ увидеть, что правило для половин делает с вашим числом. Заметьте, чего здесь нет: страница округляет по одному числу за раз и не ведёт значащие цифры через всё вычисление, где точность ответа ограничена самым неточным вводом, а конечные нули должны сохраняться как цифры, а не как значения.
1 234,5678, округлённое и усечённое на каждом из семи десятичных разрядов
| Разряд | Округлённое | Усечённое |
|---|---|---|
| 1000 | 1000 | 1000 |
| 100 | 1200 | 1200 |
| 10 | 1230 | 1230 |
| 1 | 1235 | 1234 |
| 0.1 | 1234.6 | 1234.5 |
| 0.01 | 1234.57 | 1234.56 |
| 0.001 | 1234.568 | 1234.567 |
Первые три строки ничему не противоречат, потому что округление до крупного разряда отбрасывает всю дробную часть и оба соглашения попадают на одну и ту же тысячу: до ближайшей тысячи, до ближайшей сотни и до ближайшего десятка 1 234,5678 даёт 1 000, 1 200 и 1 230 в обоих случаях. Расхождения начинаются на единицах, где половина от нуля даёт 1 235, а усечение — 1 234, и они видны в каждой строке ниже по той же причине: 5 в первом знаке после запятой — настоящий случай ровно посередине на разряде единиц, а цифры 5678 не дают более поздним строкам попасть на их точки деления. Заметьте, что число знаков после запятой в ответе задаётся строкой: у ближайшей тысячи их нет вовсе, а у ближайшей тысячной сохраняются три, поэтому конечные нули появляются и остаются. Последние шесть вариантов, по значащим цифрам, в эту таблицу не попали, потому что их разряд зависит от величины числа; для 1 234,5678 они случайно совпадают с теми же шестью разрядами, что и строки выше, поэтому от одной до шести значащих цифр дают те же пары чисел, что здесь показаны. Таблица зафиксирована на 1 234,5678, а это и значение по умолчанию, так что при первой загрузке она объясняет ответ, уже стоящий на экране; за вашим вводом она не следует. Числа в таблице приведены как есть: разделитель дробной части в ней — точка (1234.6, а не 1 234,6), потому что значения берутся из расчёта, а не из текста, и разряды в них не группируются (1234, а не 1 234).
Формула
1 234,5678 до ближайшего целого ⇒ 1 235 при правиле «половина от нуля», 1 234 при усечении; 2,5 ⇒ 3 или 2; 1 567 до 2 значащих цифр ⇒ 1 600
- 1234,5678
- Значение, которое округляется, — любое число от −1 000 000 000 до 1 000 000 000, включая дробные. Из этого же числа построена таблица ниже, поэтому её семь строк — это семь разрядов значения, уже стоящего на экране
- p0, pm2, s2
- До чего округлять, выбирается из тринадцати вариантов одного списка. Варианты с p называют десятичный разряд: p3 — ближайшая тысяча, p0 — ближайшее целое, pm2 — ближайшая сотая. Варианты с s называют число значащих цифр, s1–s6, считая от первой ненулевой цифры
- половина от нуля
- Правило для случая ровно посередине: значение, стоящее точно между двумя кандидатами, уходит от нуля, поэтому 2,5 становится 3, а −2,5 становится −3. Это соглашение, принятое в школе. Оно же выглядит как ошибка, когда складывают длинный ряд значений, оканчивающихся на ,5: каждое из них подталкивается в одну и ту же сторону
- усечение
- Второй вывод и вторая половина вопроса о половине: то же значение на том же разряде, но лишние цифры отброшены, а не округлены, — и это всегда движет к нулю. 2,5 усекается до 2, а −2,5 до −2. Печать его рядом с округлённым значением и делает соглашение видимым, потому что на большинстве вводов эти два вывода совпадают
- 1567 → 1600
- Значащие цифры в действии. Счёт начинается с первой ненулевой цифры, поэтому 1567 до двух значащих цифр сохраняет 1 и 5, а остальное округляет, давая 1600. Конечные нули остаются: ответ претендует на две значащие цифры, и только запись 1600 позволяет читателю это увидеть
- 1,005 → 1,01
- Почему арифметика ведётся по десятичным цифрам, а не умножением и делением в плавающей запятой. 1,005 хранится как значение чуть меньше 1,005, поэтому обычный путь через двойную точность округляет его вниз до 1,00; работа с цифрами даёт ответ, которого человек и ждёт, — 1,01. Пример ниже закрепляет именно этот случай
Запись измерения — классический случай, и именно оттуда взялись значащие цифры: длину, прочитанную по линейке до ближайшего миллиметра, не стоит приводить с шестью знаками после запятой, потому что лишние цифры заявляют точность, которой у инструмента никогда не было. Значащие цифры — та самая запись, которая удерживает это заявление честным, и поэтому округление измерения — не то же самое, что округление числа в головоломке. Деньги — житейская версия десятичного разряда: цены округляют до ближайшей сотой, и правило для половин здесь настоящий вопрос политики, потому что решает, куда уйдёт доля цента, а на множестве операций правило, всегда подталкивающее в одну сторону, даёт заметный сдвиг. Статистика и отчётность округляют ради читаемости: проценты до одного знака после запятой, население до ближайшей тысячи, средние до той же точности, что и их ввод. У усечения свои применения, и именно поэтому оно здесь печатается, а не опускается: отбрасывание дробной части в сторону нуля — то, что многие языки программирования делают по умолчанию, и то, что появляется, когда значение хранится в формате с фиксированной точностью. Во всех этих случаях правило, которое стоит держать в голове, таково: округлить дважды — не то же самое, что округлить один раз, а округлённое число — это утверждение о точности, а не просто более короткая запись исходного. Арифметика над округлёнными значениями накапливает разницу, и поэтому задача о значащих цифрах в вычислении — отдельный инструмент, а не эта страница.
Разобранные примеры
1 234,5678 до ближайшего целого
- Соседние с 1 234,5678 значения — 1 234 и 1 235
- Решает первый знак после запятой, то есть 5
- Правило половины от нуля считает 5 поводом уйти от нуля, поэтому значение округляется до 1 235
- Идущие следом цифры 5678 на это не влияют: решает цифра в разряде округления, а всё после неё лишь разрешает ничью
- Усечение вместо этого отбрасывает дробную часть и даёт 1 234
Вариант по умолчанию и образец, из которого построена таблица ниже. Всю работу делает 5 в первом знаке после запятой: следующие за ней 6, 7 и 8 не имеют значения, и значение 1 234,5001 округлилось бы точно так же. Здесь два вывода различаются, и это удобный случай — на большинстве вводов правило половины от нуля и усечение совпадают, и именно пара чисел говорит вам, было ли вообще задействовано правило для половин.
Случай ровно посередине: 2,5 до ближайшего целого
- 2,5 стоит ровно посередине между 2 и 3
- Правило половины от нуля уводит от нуля, поэтому округлённое значение равно 3
- Усечение движет к нулю, поэтому усечённое значение равно 2
- Ни то, ни другое не ошибка: это два соглашения для одного и того же ввода
Самый маленький случай, показывающий расхождение, и тот, который стоит запомнить. Половина от нуля — не единственное применяемое соглашение: банковское округление отправило бы 2,5 к чётному соседу, то есть к 2, а это важно на длинных списках измерений, потому что округление половин всегда вверх вносит небольшое смещение вверх. Эта страница использует половину от нуля — школьное соглашение — и говорит об этом прямо, а не оставляет это выяснять.
Отрицательное значение ровно посередине: −2,5 до ближайшего целого
- −2,5 стоит ровно посередине между −3 и −2
- Правило половины от нуля уводит от нуля, а уход от нуля на отрицательной стороне означает дальше вниз, поэтому ответ −3
- Усечение движет к нулю и даёт −2
- Знак определяется расстоянием от нуля, а не направлением вдоль числовой прямой
Случай, который отделяет половину от нуля от правила «всегда округлять вверх». Оба значения здесь движутся по одному и тому же правилу — от нуля, — но на числовой прямой они идут в противоположные стороны, потому что ноль стоит посередине. Любой код или правило, описанные как «округляет вверх» без уточнения, двусмысленны ровно поэтому, и отрицательные строки таблицы ниже показывают тот же эффект на других разрядах.
1,005 до двух знаков после запятой
- Соседние значения — 1,00 и 1,01
- Решает третий знак после запятой, 5, а это ровно случай посередине
- Правило половины от нуля уводит от нуля, поэтому значение округляется до 1,01
- Усечение отбрасывает 5 и оставляет 1,00, причём конечный ноль сохраняется, чтобы точность была видна
Пример, которым оправдана реализация. Очевидный путь — умножить на 100, округлить, разделить на 100 — даёт 1,00, потому что 1,005 нельзя сохранить точно и сохранённое значение чуть меньше 1,005. Человек же ждёт ответ 1,01, и именно его даёт работа с десятичными цифрами. То же происходит на множестве житейских значений, поэтому результат, отличающийся на единицу в последнем разряде, обычно объясняется этим, а не ошибкой в правиле.
1 567 до двух значащих цифр
- Первая значащая цифра — 1, в разряде тысяч; вторая — 5
- Две значащие цифры означают, что эти две цифры сохраняются, а округление идёт по разряду сотен
- Следующая за ними цифра — 6, она поднимает 5, поэтому значение становится 1 600
- Конечные нули остаются: именно они фиксируют, что сохранили две значащие цифры
- Усечение на том же разряде даёт 1 500
Тот же ответ, что и при округлении до ближайшей сотни, но полученный с другого конца. Заметьте, чего вывод сказать не может: 1 600, записанное как обычное число, неотличимо от 1 600, округлённого до целого, или от измерения, которое равнялось ровно 1 600. Сохранение нулей — это максимум, что такая запись может сделать, а проведение значащих цифр через вычисление, где их количество должно выжить при умножении и делении, — задача отдельная от округления одного значения.
Ограничения
Значение должно быть между −1 000 000 000 и 1 000 000 000, включая дробные, а разряд выбирается из тринадцати вариантов, а не вводится вручную, поэтому попросить разряд вне этого списка нельзя. Округление ведётся по десятичным цифрам записанного значения, а не масштабированием в плавающей запятой, поэтому результаты совпадают с тем, что говорят цифры: 1,005 до двух знаков после запятой здесь равно 1,01, тогда как обычный путь через умножение и деление дал бы 1,00. У того же решения есть заметное следствие: результаты всегда печатаются с точкой и никогда с разделителями разрядов, поэтому читатель, набравший в поле десятичную запятую, увидит в ответе точку. Это сделано намеренно и совпадает с другими страницами, которые печатают текстовый результат. Конечные нули сохраняются, потому что они фиксируют точность, на которую претендует ответ: 1 234,6 и 1 234,60 — это разные выводы с разных разрядов, и записываются они по-разному. Отрицательные значения округляются по расстоянию от нуля, поэтому отрицательное значение ровно посередине уходит вниз по числовой прямой, а не вверх. Таблица ниже зафиксирована на 1 234,5678 и не следует за вашим вводом; она показывает первые семь вариантов, применённых к этому одному числу, а шесть вариантов по значащим цифрам описаны в её примечании, а не вынесены в отдельные строки. Никакого округления накопленной суммы здесь нет, и ничего не накапливается: страница округляет одно значение за расчёт.
Частые вопросы
- Что означает правило «половина от нуля»?
- То, что значение, стоящее ровно посередине между двумя кандидатами, уходит от нуля: 2,5 становится 3, а −2,5 становится −3. Это соглашение, которое преподают в школе, и именно его использует данная страница. Оно не единственное в ходу: банковское округление отправляет половину к чётному соседу, а это избавляет от небольшого смещения вверх, которое даёт округление половин всегда вверх на длинных списках значений.
- Чем отличаются десятичные разряды от значащих цифр?
- Десятичные разряды считаются от запятой, а значащие цифры — от первой ненулевой цифры. Две значащие цифры дают из 1567 число 1600 — то же, что и округление до ближайшей сотни, тогда как два знака после запятой дают из 1567 число 1567,00. Значащие цифры — это запись, принятая для измерений, потому что их количество не меняется, когда ту же величину записывают в других единицах.
- Почему 1,005 округляется до 1,01, а не до 1,00?
- Потому что значение стоит ровно посередине, а страница округляет половины от нуля, работая по десятичным цифрам, а не масштабированием в плавающей запятой. Обычный путь — умножить на 100, округлить и разделить на 100 — даёт 1,00, так как 1,005 хранится как значение чуть меньше 1,005. Ответ по цифрам равен 1,01, а это и есть то, что говорит правило и что получил бы человек, записывающий число вручную.
- Что такое усечение и зачем его показывать?
- Усечение отбрасывает лишние цифры вместо того, чтобы их округлять, и это всегда движет значение к нулю: 2,5 становится 2, а −2,5 становится −2. Оно печатается рядом с округлённым значением на том же разряде, потому что эта пара — самый ясный способ увидеть, было ли задействовано правило для половин: на вводах вдали от середины два вывода совпадают, а там, где они расходятся, разницу создало именно соглашение.
- Конечные нули что-то значат?
- Да, и они сохраняются намеренно. 1 234,6 до одного знака после запятой и 1 234,57 до двух — это разные утверждения о том, насколько точно известно значение, и отбрасывание конечного нуля стёрло бы разницу. То же касается целого числа, округлённого по значащим цифрам: у 1600 нули остаются, потому что именно они фиксируют, что сохранили две значащие цифры.
- Проводит ли эта страница значащие цифры через вычисление?
- Нет. Она округляет по одному значению за раз и не ведёт точность через цепочку арифметики, где результат ограничен самым неточным вводом, а промежуточные значения приходится держать неокруглёнными до самого конца. Это отдельная задача от округления одного числа, потому что ей нужно, чтобы количество значащих цифр выжило при умножении и делении, а обычное округлённое значение этого выразить не может.
Источники
- Rounding — the definition, the halfway rules including round-half-up and round-half-to-even, and how the choice affects accumulated results — Wolfram MathWorld (United States)
- Significant digits — how the count starts at the first non-zero digit, and why trailing zeros record precision rather than value — Wolfram MathWorld (United States)
- Nearest integer function — the special case of rounding to the nearest whole number, and the tie-breaking conventions defined for it — Wolfram MathWorld (United States)