Функции round, ceiling, floor в sql: округление и другие действия с дробными числами

Содержание:

Округление в меньшую сторону до ближайшего целого числа

Если вы хотите округлять в меньшую сторону, используйте метод Math.floor():

Math.floor(42.23);
> 42
Math.floor(36.93);
> 36

Округление «вниз» имеет одно направление для всех чисел, в том числе и для отрицательных. Это можно представить, как небоскреб с бесконечным количеством этажей, в том числе и ниже уровня фундамента (представляющих отрицательные числа). Если вы находитесь в лифте между подвальными этажами 2 и 3 (что соответствует значению -2.5), Math.floor доставит вас на этаж -3:

Math.floor(-2.5);
> -3

Если нужно избежать этого, используйте JavaScript Math округление с помощью Math.trunc(), поддерживаемый во всех современных браузерах (кроме IE / Edge):

Math.trunc(-41.43);
> -41

MDN также предоставляет полифилл из трех строк для обеспечения поддержки Math.trunc в старых браузерах и IE / Edge.

Округление по Гауссу

Округление по Гауссу («банковское«, конвергентное или голландское) представляет собой метод округления без статистической погрешности. Стандартное JavaScript округление иногда дает погрешности в большую сторону. Округление по Гауссу позволяет избежать этой погрешности с помощью округления до ближайшего четного числа. Лучшее решение, которое мне известно:

function gaussRound(num, decimalPlaces) {
    var d = decimalPlaces || 0,
    m = Math.pow(10, d),
    n = +(d ? num * m : num).toFixed(8),
    i = Math.floor(n), f = n - i,
    e = 1e-8,
    r = (f > 0.5 - e && f < 0.5 + e) ?
		((i % 2 == 0) ? i : i + 1) : Math.round(n);
    return d ? r / m : r;
}

Примеры использования:

gaussRound(2.5)
> 2

gaussRound(3.5)
> 4

gaussRound(2.57,1)
> 2.6

Для чего округлять числа?

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

0.1 * 0.2;
> 0.020000000000000004

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

Виды чисел

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

Точные

Хранение данных и пересчет формул, которые поддерживаются приложением Excel составляют 15 разрядов. Числовые значения хранятся с точностью 15 разрядов, а отображаться на экране могут по-разному, в зависимости от выбранного формата. Для расчетов используются хранимые, а не отображаемые значения. При работе с различными числовыми значениями может понадобиться разная степень точности в вычислениях.

Приближенные

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

Методы

В разных сферах могут применяться различные методы округления. Во всех этих методах «лишние» знаки обнуляют (отбрасывают), а предшествующий им знак корректируется по какому-либо правилу.

  • Округление к ближайшему целому (англ. rounding) — наиболее часто используемое округление, при котором число округляется до целого, модуль разности с которым у этого числа минимален. В общем случае, когда число в десятичной системе округляют до 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 последнего сохраняемого разряда.
  • Округление к меньшему по модулю (округление к нулю, целое англ. fix, truncate, integer) — самое «простое» округление, поскольку после обнуления «лишних» знаков предшествующий знак сохраняют, то есть технически оно состоит в отбрасывании лишних знаков. Например, 11,9 → 11; −0,9 → 0; −1,1 → −1). При таком округлении может вноситься погрешность в пределах единицы последнего сохраняемого разряда, причём в положительной части числовой оси погрешность всегда отрицательна, а в отрицательной — положительна.
  • Округление к большему (округление к +∞, округление вверх, англ. ceiling — досл. «потолок») — если обнуляемые знаки не равны нулю, предшествующий знак увеличивают на единицу, если число положительное, или сохраняют, если число отрицательное. В экономическом жаргоне — округление в пользу продавца, кредитора (лица, получающего деньги). В частности, 2,6 → 3, −2,6 → −2. Погрешность округления — в пределах +1 последнего сохраняемого разряда.
  • Округление к меньшему (округление к −∞, округление вниз, англ. floor — досл. «пол») — если обнуляемые знаки не равны нулю, предшествующий знак сохраняют, если число положительное, или увеличивают на единицу, если число отрицательное. В экономическом жаргоне — округление в пользу покупателя, дебитора (лица, отдающего деньги). Здесь 2,6 → 2, −2,6 → −3. Погрешность округления — в пределах −1 последнего сохраняемого разряда.
  • Округление к большему по модулю (округление к бесконечности, округление от нуля) — относительно редко используемая форма округления. Если обнуляемые знаки не равны нулю, предшествующий знак увеличивают на единицу. Погрешность округления составляет +1 последнего разряда для положительных и −1 последнего разряда для отрицательных чисел.

Round() в Go 1.10

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

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

Рассматривая приведённые выше константы, мы видим, что сдвиг составляет 64 — 11 — 1, что означает 64 бита на число, 11 из которых используются для показателя степени, один — для знака и 52 оставшихся бита — для мантиссы. Это означает, что используемый сдвиг удаляет биты мантиссы, а маска удаляет бит знака, оставляя нас только с показателем степени.

В полученном числе показатель степени записан не как он есть, а с прибавлением числа 1023 (это делается для того чтобы записывать отрицательные показатели для очень маленьких чисел), что означает, что мы должны вычесть 1023 из e, вычисленного выше, чтобы получить фактический показатель. Иными словами, если e < bias, то мы имеем отрицательный показатель степени, что означает, что абсолютное значение float должно быть < 1. Действительно, дальше мы видим:

Здесь бит маскируется знаковым битом, это используется только для сохранения правильного знака: теперь мы можем полностью игнорировать мантиссу. Мы можем это сделать, потому что в этом случае нас интересует только показатель степени. Так как используется основание степени 2, а e < bias, мы знаем, что наименьший показатель, который может быть, равен -1, а 2 ^ -1 = 0,5. Кроме того, мантисса имеет некоторое значение 1.X. Таким образом, в зависимости от показателя наше число находится либо в диапазоне (0,5, 1), либо в диапазоне (0, 0,5). Поэтому во втором случае для правильного округления нам нужно добавить к числу единицу. Фух. Подробнее это описано в википедии.

Теперь разберём второй случай:

Наверное, вы думаете, что условие в этой ветке должно быть e > bias, чтобы покрыть все случаи с положительным показателем степени. Но вместо этого тут используется только их часть. Использование сдвига здесь особенно интересно, потому что кажется, что оно несравнимо с bias. Первое — это число битов смещения, а второе — численное смещение. Но, поскольку числа с плавающей точкой представлены как (1.мантисса) * 2 ^ X, то если X больше числа битов в мантиссе, мы гарантированно получим значение без дробной части. То есть показатель степени сместил десятичную точку вправо настолько, что мантисса окончательно пропала. Таким образом, выражение в этой ветке игнорирует числа с плавающей точкой, которые уже округлены.

Первая строка тут простая: вычитаем bias из e и получаем реальное значение показателя степени. Вторая строка добавляет к значению 0,5. Это работает, потому что старший бит мантиссы добавляет 0,5 к финальной сумме (см. представление в статье “Википедии” ниже). В этом случае эта сумма переполняет 52-битные границы мантиссы, показатель степени будет увеличен на 1. Значение показателя степени не сможет переполниться до знакового бита, так как оно не может быть больше bias+shift из примера выше. В любом случае, дробная часть очищается. Таким образом, если дробная часть была больше или равна 0,5, она будет увеличена на 1, в противном случае будет отброшена. Хитро и не очевидно до тех пор, пока мы не посмотрим глубже.

Работа с таблицами Excel

Округление результатов вычислений

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

Рис. 2.28. Панель функции «ОКРУГЛ»

Данная функция округляет число до указанного количества десятичных разрядов. Синтаксис ее следующий:

ОКРУГЛ(число; количество_цифр)

здесь число — это округляемое число, количество_цифр — это количество десятичных разрядов, до которого нужно округлить число.

Например, для операции извлечения корня в нашем примере формула округления будет иметь такой вид:

=ОКРУГЛ(В10/\(1/С10);2)

Первый аргумент, В10/\(1/С10), показывает, для какой операции выполняется округление, а второй (цифра 2) определяет количество десятичных разрядов. В нашем случае вычисления осуществляются с точностью до второго знака после запятой (например, до копеек). Однако округление необходимо производить на определенном этапе расчетов.

ПРИМЕР: На таможню приходит товар стоимостью 3 цента за единицу в количестве 1000 штук. Курс обмена — 29,31 руб./$, а все таможенные платежи (без учета НДС) составляют 29,45%. База начисления для таможенных платежей будет равна цене в долларах, умноженной на курс доллара и количество единиц товара:
$0,03 * 29,31 * 1000 = 879,30 руб.

При умножении базы начисления на ставку таможенного сбора получается сумма, которой быть не может (так как не существует пока в мире десятых и сотых долей копеек при перечислении их через банк):
879,30 руб. * 29,45% = 258,9539 руб.

Если и далее производить расчеты без округления размера таможенного платежа, то можно получить стоимость партии товара, которая равна стоимости товара плюс таможенные платежи:
879,30 руб. + 258,9539 руб. = 1138,25385 руб.

Таким образом, цена единицы товара будет следующей:
1138,25385 руб. : 1000 шт. = 1,138254 руб.

Полученные неправильные результаты представлены в табл. 2.1.

Цена за единицу ($) Количество (штук) Курс (руб./$) Таможенный платеж (%) Таможенный платеж (руб.) Итого стоимость партии (руб.) Цена за единицу (руб.)
0,03 1000 29,31 29,45% 258,9539 1138,25385 1,138254

Таблица 2.1. Пример неправильного расчета таможенных платежей

Поэтому некоторые значения следует округлить с точностью до копеек. А сумма таможенного платежа должна вычисляться по формуле

=ОКРУГЛ(цена в долларах х на курс доллара х количество;2)

Цифра 2 означает, что выполняется округление с точностью до второго знака (то есть до копеек).

Таким же образом можно округлить и стоимость партии товара, в результате чего получится сумма, равная 1138,25 руб. Однако операция округления цены за единицу товара может привести к нежелательным последствиям. Это зависит от того, как происходит расчет цены. Если округлить цену товара до копеек, исходя из стоимости партии товара:

=ОКРУГЛ(1138,25/1000;2)

то результат будет равен 1,14 руб. Но получается парадокс: произведя обратный расчет, мы получим, что партия стоит 1,14 * 1000 =1140 руб. Откуда-то взялись лишние 2 рубля. Эти 2 рубля могут значительно усложнить ведение бухгалтерского учета, если в бухгалтерской программе не предусмотрена возможность задания разрядности денежной единицы при некоторых операциях. До какого же знака целесообразно задать точность в данном примере?

В нашем случае точность округления должна быть равна разрядности копеек (2 знака после запятой) плюс разрядность числа, определяющего объем партии (у нас 3 разряда). Таким образом, необходимо округление до пятого знака.

Цена ($) Количество Курс (руб./$) Таможенный платеж (%) Таможенный платеж (руб.) Итого стоимость партии (руб.) Цена за единицу (руб.)
0,03 1000 29,31 29,45% 258,95 1138,25 1,13825

Таблица 2.2. Пример правильного расчета таможенных платежей и стоимости товара

В Excel существует более 10 функций округления, каждая из которых выполняет эту операцию по-своему. Часть из них представлена на рис. 2.29. Исчерпывающую информацию относительно всех этих функций вы можете получить в справке Excel, вызываемой путем нажатия функциональной клавиши .

Рис. 2.29. Функции округления в Excel

Изменение количества отображаемых знаков после запятой без изменения числового значения

Выполнение такого рода действия осуществляется при помощи настроек числового формата, путем уменьшения количества знаков после запятой, при этом само числовое значение не округляется, округляется только его отображение на экране монитора. Внести изменения в настройки числового формата, можно при помощи кнопок «Увеличить разрядность» и «Уменьшить разрядность» на ленте Excel 2007 во вкладке «Главная», в группе «Число».

В других версиях Excel эти кнопки выглядят аналогично. Изменения в настройки числового формата, а именно увеличение либо уменьшение количества отображаемых знаков после запятой, можно внести в настройках формата ячеек. Не буду повторять о том, как вызвать окно «Формат ячеек»
разными способами, так как ранее этот вопрос уже рассматривался. Использование вышеописанного метода округления может приводить к некоторым нежелательным последствиям, например вот к такому:

Как видно из примера, некорректная настройка числового формата привела к тому, что 2+3=6, что неверно.

Как усреднить диапазон с округлением в Excel?

Обычно мы можем легко вычислить среднее значение определенного диапазона с помощью функции СРЕДНЕЕ в Excel. Однако среднее значение может содержать несколько десятичных знаков, как показано на снимке экрана слева. Иногда может потребоваться сохранить те же десятичные разряды, что и в исходных числах, или просто удалить десятичные разряды. Здесь я представлю несколько формул для среднего диапазона с округлением в Excel.

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

1. Выберите пустую ячейку, например Ячейку C3, введите формулу = СРЗНАЧ (A1: A7) (A1: A7 — это диапазон, в котором вы хотите вычислить среднее значение), и нажмите Enter ключ.

2. Выберите ячейку со средним значением, которое вы только что рассчитали (в нашем случае — ячейка C3), а затем щелкните значок Увеличить десятичную дробь кнопка

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

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

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

Выберите пустую ячейку, например Ячейку C3, введите формулу = ОКРУГЛ (СРЕДНИЙ (A1: A7); 1) в него и нажмите Enter ключ.

Заметки: (1) В формуле = ОКРУГЛ (СРЕДНИЙ (A1: A7), 1), A1: A7 — это диапазон, в котором вы хотите вычислить среднее значение, а 1 означает, что вы хотите округлить среднее значение только до одного десятичного знака, и вы можете изменить их в зависимости от ваших потребностей. (2) Для округления среднего значения используйте эту формулу = ОКРУГЛ вверх (СРЕДНИЙ (A1: A7); 1) . (3) Для округления среднего значения используйте эту формулу = ОКРУГЛ ВНИЗ (СРЕДНИЙ (A1: A7); 1).

Демо: средний диапазон с округлением в Excel

Kutools for Excel включает более 300 удобных инструментов для Excel, которые можно бесплатно попробовать без ограничений в течение 30 дней. Скачать и бесплатную пробную версию сейчас!

Пакетное округление нескольких значений вверх / вниз / до даже без формулы в Excel

Обычно функция «Десятичная дробь» может уменьшить количество десятичных знаков в ячейках, но фактические значения, отображаемые в строке формул, не меняются вообще. Kutools для Excel Круглые Утилита может помочь вам легко округлить значения вверх / вниз / даже до указанных десятичных знаков. Полнофункциональная бесплатная 30-дневная пробная версия!

Округление с помощью кнопок на ленте

Самым простым способом изменить округление числа — это выделить ячейку или группу ячеек, и находясь во вкладке «Главная», нажать на ленте на кнопку «Увеличить разрядность» или «Уменьшить разрядность». Обе кнопки располагаются в блоке инструментов «Число». При этом, будет округляться только отображаемое число, но для вычислений, при необходимости будут задействованы до 15 разрядов чисел.

При нажатии на кнопку «Увеличить разрядность», количество внесенных знаков после запятой увеличивается на один.

При нажатии на кнопку «Уменьшить разрядность» количество цифр после запятой уменьшается на одну.

Поля

AwayFromZero 1

Стратегия округления до ближайшего числа, а если число находится на расстоянии от двух других, оно округляется в сторону ближайшего числа, которое находится вне нуля.

ToEven

Стратегия округления до ближайшего числа, а если число находится на расстоянии от двух других, оно округляется в сторону ближайшего четного числа.

ToNegativeInfinity 3

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

ToPositiveInfinity 4

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

ToZero 2

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

Округление числовых значений с помощью функций

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

Функция ОКРУГЛ(число;число_разрядов)
округляет число до указанного количества десятичных разрядов по классическим правилам математического округления;

Функция ОКРУГЛВВЕРХ(число;число_разрядов)
округляет число с избытком до ближайшего большего по модулю;

Функция ОКРУГЛВНИЗ(число;число_разрядов)
округляет число с недостатком до ближайшего меньшего по модулю;

Функция ОКРУГЛТ(число;точность)
округляет число до кратного заданному числу, в формуле ОКРУГЛТ параметр «точность» — это кратное, до которого нужно округлить результат.

Функция ОКРВВЕРХ(число;точность)
округляет с избытком число до ближайшего целого либо до ближайшего кратного указанному значению

Функция ОКРВНИЗ(число;точность)
округляет с недостатком число до ближайшего целого либо до ближайшего кратного указанному значению.

*В некоторых версиях Excel функция ОКРУГЛТ отсутствует, для ее появления необходимо установить стандартную надстройку Excel – «Пакет анализа».
Е
сли функция ОКРУГЛТ есть в математических функциях, но возвращает ошибку #ИМЯ?, попробуйте установить стандартную надстройку Excel – «Пакет анализа».

Кроме вышеперечисленных функций, в стандартных средствах Excel есть еще такие функции, связанные с округлением, как

Функция ЧЕТН(число)
округляет число до ближайшего четного целого. При этом положительные числа округляются в сторону увеличения, а отрицательные – в сторону уменьшения;

Функция НЕЧЁТ(число)
округляет число до ближайшего нечетного целого. Положительные числа округляются в сторону увеличения, а отрицательные – в сторону уменьшения;

Функция ОТБР(число)
округляет число до целого, отбрасывая дробную часть.

Формат ячейки может предопределять отображаемый результат функции, например, если число округлено функцией ОКРУГЛ до трех десятичных разрядов, а в формате ячейки указан числовой формат с двумя знаками после запятой, то при отображении результата на экране определяющее действие будет оказывать формат ячейки.

Для тех, кто использует стандартные функции Excel при написании макросов в VBA, может быть полезен сайт http://ru.excelfunctions.eu/
, где есть сопоставление между русскими и английскими именами функций с их русским описанием.

Round(Decimal)

Math.Round(d) rounds a decimal value to the nearest integral value, and rounds midpoint values to the nearest even number.

Syntax

The syntax of Round(d) method is

Math.Round(Decimal d)

where

Parameter Description
d The decimal number to be rounded.

Return Value

The method returns rounded Decimal value.

Example 1 – Round(d)

In this example, we will take some decimal values and round them to the nearest integral values using Math.Round() method.

C# Program

using System;
 
class Example {
    static void Main(string[] args) {
        Decimal d, result;

        d = 10.2563M;
        result = Math.Round(d);
        Console.WriteLine($"Round({d}) = {result}");

        d = 10.63M;
        result = Math.Round(d);
        Console.WriteLine($"Round({d}) = {result}");

        d = 10.5M;
        result = Math.Round(d);
        Console.WriteLine($"Round({d}) = {result}");
    }
}

Output

Round(10.2563) = 10
Round(10.63) = 11
Round(10.5) = 10

ОКРУГЛЕНИЕ К БЛИЖАЙШЕМУ ЦЕЛОМУ

Округление к ближайшему целому до N-го знака осуществляется по следующему правилу:

  • если N+1 знак < 5, то N-ый знак остается без изменений, а все знаки после N-го отбрасываются (обнуляются);
  • если N+1 знак > 5, то N-ый знак увеличивают на единицу, а все знаки после N-го отбрасываются (обнуляются).

Примеры округления до 2 знаков после запятой:

2.4545 → 2.452.4564 → 2.46

По способам округления числа в случае когда N+1 знак равен 5, выделяются следующие виды округления к ближайшему целому:

  • Математическое округление;
  • Банковское округление;
  • Случайное округление;
  • Чередующееся округление.

Математическое округление в случае если N+1 знак = 5 увеличивает N-й знак на единицу,  а все знаки после N-го отбрасываются (обнуляются). 

Пример математического округления до 2-х знаков после запятой:

2.4554 → 2.46

Данное округление в ABL реализовано в функции ROUND.

ROUND(iRnd, n)

  • iRnd — округляемое значение;
  • n — знак до которого осуществляется округление.

Банковское округление отличается от математического тем, что предполагает округление в таком случае к ближайшему четному числу. Т.е. результатом округления числа 2.5 при математическом округлении будет 3, а при банковском 2. 

FUNCTION BankRound RETURNS DECIMAL (INPUT iRnd AS DEC, INPUT n AS INT).    DEF VAR ChkFor5 AS INTEGER NO-UNDO.   DEF VAR B_Round AS DECIMAL NO-UNDO.   B_Round = ROUND(iRnd,n).   ChkFor5 = ROUND(((TRUNCATE(iRnd, n + 1) -                      TRUNCATE(iRnd,n)) * EXP(10, n + 1)),0).   IF ChkFor5 = 5 THEN    DO:      IF ((TRUNCATE(iRnd,n) * EXP(10,n)) MOD 2) = 0 THEN          B_Round = TRUNCATE(i,n).   END.   RETURN B_Round.END FUNCTION.

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

FUNCTION RandomRound RETURNS DECIMAL (INPUT iRnd AS DEC, INPUT n AS INT).   DEF VAR vResult AS DECIMAL NO-UNDO.   DEF VAR ChkFor5 AS INTEGER NO-UNDO.   DEF VAR vRandom  AS DECIMAL NO-UNDO.   vRandom = RANDOM(0,1).   vResult = TRUNCATE(iRnd,n).   ChkFor5 = ROUND(((TRUNCATE(iRnd, n + 1) -                      TRUNCATE(iRnd,n)) * EXP(10, n + 1)),0).   IF ChkFor5 = 5 THEN vResult = vResult + vRandom * EXP(10, - n).    RETURN vResult.END FUNCTION. 

Чередующееся округление осуществляет округление числа 5 поочередно то в меньшую, то в большую стороны. Данное округление очевидно применимо при необходимости округления массива чисел, а не единичного числа.

Функции округления чисел в Excel

При работе с функциями в Excel, Вы наверно замечали набор функций ОКРУГЛ(), ОКРВВЕРХ(), ОКРВНИЗ(), ОКРУГЛВВЕРХ(), ОКРУГЛВНИЗ() категории «Математические». В чем отличия между этими функциями и как они работают?

Ранее, в статье «Формат данных в Excel», я описывал форматы представления данных в Excel. С помощью представления можно добавить или сократить дробную часть числа, но фактический формат числа остается неизменным. Часто, при делении чисел, дробная часть получается очень длинной, что в дальнейшем может мешать при некоторых расчетах и выдавать результат не тот, который ожидался. Для того чтобы сократить дробную часть числа (округлить), используется функция ОКРУГЛ(), в которой можно указать необходимое число разрядов после запятой. Также возможно округление и целой части.

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

Например, число 2553,5675643 после округления до сотых будет выглядеть 2553,57 В общем, округление по школьной программе

Теперь рассмотрим как работает функция ОКРУГЛ() и какие имеет аргументы.

Синтаксис функции прост — ОКРУГЛ(Число; Число разрядов).

  • Число – в этом аргументе указывается ссылка на ячейку с числом, которое необходимо округлить или вводите значение. Допускает использование других функции, результатом которых является число.
  • Число разрядов — значение этого аргумента указывает, до какого разряда необходимо округлить число. При указании в этом аргументе положительного числа, округление будет происходить после запятой. При нуле, округление до целой части. При указании отрицательного аргумента, округляется целая часть. При этом, кол-во разрядов в целой части, сохраняется и заполняется нулями.

Пример: Округлим число 2553,5675643 Запись функции следующая:

«=ОКРУГЛ(2553,5675643;2)» вернет результат 2553,57 «=ОКРУГЛ(2553,5675643;0)» вернет 2554 «=ОКРУГЛ(2553,5675643;-2)» вернет 2600

В Excel так же есть функции ОКРВВЕРХ(), ОКРВНИЗ(), ОКРУГЛВВЕРХ(), ОКРУГЛВНИЗ(). Все эти функции практически аналогичны работе с функцией ОКРУГЛ(), но у каждой из них немного иной алгоритм округления.

Функция: ОКРВВЕРХ() — функция округляет число до ближайшего целого, которое кратно числу, указанного в аргументе «точность«. Округление происходит в большую сторону.

Примеры: «=ОКРВВЕРХ(2553,57;1)», результат 2554 «=ОКРВВЕРХ(2553,57;3)», вернет результат кратный 3 т.е. 2556

Для округления отрицательных чисел, аргумент «точность» должен быть также отрицательным, иначе функция вернет ошибку «#ЧИСЛО!» «=ОКРВВЕРХ(-2553,57;-2)», результат -2554

И еще один пример округления, но уже дробного числа «=ОКРВВЕРХ(0,578;0,02)» результат 0,58

ОКРВНИЗ() — функция аналогична ОКРВВЕРХ(), с той лишь разницей что округление происходит в меньшую сторону. «=ОКРВНИЗ(2553,57;2)» результат 2552

ОКРУГЛВВЕРХ(), ОКРУГЛВНИЗ() — функции по принципу работы схожи с функцией ОКРУГЛ(). Отличие в том, что эти функции округляют число с избытком(недостатком).

Примеры: «=ОКРУГЛВВЕРХ(2553,34;1)», результат получится 2553,4 «=ОКРУГЛВВЕРХ(2553,34;-1)», результат 2560 «=ОКРУГЛВНИЗ(2553,34;1)», результат 2553,3 «=ОКРУГЛВНИЗ(2553,34;-1)», результат 2550

Усечение десятичных чисел

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

function truncated(num) {
    return Math.trunc(num * 100) / 100;
}
truncated(3.1416)
> 3.14

Если требуется что-то более гибкое, можно воспользоваться побитовым оператором:

function truncated(num, decimalPlaces) {    
    var numPowerConverter = Math.pow(10, decimalPlaces); 
    return ~~(num * numPowerConverter)/numPowerConverter;
}

Использование:

var randInt = 35.874993;
truncated(randInt,3);
> 35.874

Почему Excel округляет большие числа?

Почти в любом калькуляторе или программе, если вводить слишком большие числа, они округляются до вида E+ и так далее. Excel не является исключением. Почему так происходит?Если число содержит больше 11 цифр, то он автоматически переводится в вид 1,111E+11. Такое представление числа называется экспоненциальным. Образовать такой способ представления вручную довольно сложно. Для этого необходимо вычислить логарифм числа и совершить еще несколько операций.

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

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

Round(Decimal, Int32)

Math.Round(d, decimals) rounds a decimal value to a specified number of fractional digits , and rounds midpoint values to the nearest even number.

Syntax

The syntax of Round(d, decimals) method is

Math.Round(Decimal d, Int32 decimals)

where

Parameter Description
d The decimal number to be rounded.
decimals The number of decimal places in the return value.

Return Value

The method returns value.

Example 2 – Round(d, decimals)

In this example, we will take some decimal values and round them to specific number of decimal points using Math.Round() method.

C# Program

using System;
 
class Example {
    static void Main(string[] args) {
        Decimal d, result;
        Int32 decimals;

        d = 10.2563M;
        decimals = 2;
        result = Math.Round(d, decimals);
        Console.WriteLine($"Round({d}, {decimals}) = {result}");

        d = 10.63524M;
        decimals = 1;
        result = Math.Round(d, decimals);
        Console.WriteLine($"Round({d}, {decimals}) = {result}");

        d = 10.5M;
        decimals = 0;
        result = Math.Round(d, decimals);
        Console.WriteLine($"Round({d}, {decimals}) = {result}");
    }
}

Output

Round(10.2563, 2) = 10.26
Round(10.63524, 1) = 10.6
Round(10.5, 0) = 10

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

DoubleRounder — это утилита из библиотеки decimal4j. Она предоставляет быстрый метод округления double чисел до 18 знаков после запятой.

Последнюю версию библиотеки можно найти здесь. Чтобы подключить ее, добавьте зависимость в файл pom.xml:

<dependency>
    <groupId>org.decimal4j</groupId>
    <artifactId>decimal4j</artifactId>
    <version>1.0.3</version>
</dependency>

Пример использования утилиты:

DoubleRounder.round(PI, 3);

Но DoubleRounder дает сбой в нескольких сценариях. Например:

System.out.println(DoubleRounder.round(256.025d, 2));
// OUTPUTS: 256.02 вместо ожидаемого 256.03

Как округлять числа в Эксель (Excel) с помощью применения функций

Основные функции для округления в программе Эксель:

«ОКРУГЛ»-округляет до десятичных знаков число, которое Вы указали.

«ОКРУГЛВВЕРХ»-округляет до ближайшего числа вверх по модулю.

«ОКРУГЛВНИЗ»-округляет до ближайшего числа вниз по модулю.

«ОКРУГЛТ»-округляет число с точностью, которая была выбрана.

«ОКРВВЕРХ»-округляет число с точностью, которая была выбрана вверх по модулю.

«ОКРВНИЗ»-округляет число с точностью, которая была выбрана вниз по модулю.

«ОТБР»-округляет данные до целого числа.

«ЧЕТН»-округляет данные до ближайшего четного числа.

«НЕЧЕТН»-округляет данные до ближайшего нечетного числа.

Для функций «ОКРУГЛ», «ОКРУГЛВВЕРХ» и «ОКРУГЛВНИЗ» такой формат ввода:

Наименование функции(число;число разрядов).

Например, если Вам нужно округлить число 3,55557 до двух разрядов, то Вам будет нужно написать: «=ОКРУГЛ(3,55557;2)» и нажать на клавиатуре на клавишу Enter для того, чтобы получись результат округления.

Для функций «ОКРУГЛТ», «ОКРВВЕРХ», а также «ОКРВНИЗ» такой формат ввода:

Наименование функции (число;точность).

К примеру, если Вам нужно округлить число 5 до ближайшего числа, которое кратно 2, то Вам будет нужно написать: «=ОКРУГЛТ(5;2)» и нажать на клавиатуре на клавишу Enter для того, чтобы Вы смогли получить результат округления.

Для функций «ОТБР», «ЧЕТН» и «НЕЧЕТН» такой формат ввода: Наименование функции(число).

Например, если Вам нужно округлить число 3 до ближайшего четного числа, то Вам будет нужно написать: «=ЧЕТН(3)» и нажать на клавиатуре на клавишу Enter для того, чтобы получить результат округления.

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

А также, Вам возможно будет интересно узнать о том, что в программе Excel есть и другой способ введения функции округления.

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

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

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector