Функции округления
Приведённая ниже документация сгенерирована на основе системной таблицы system.functions
ceil
Добавлена в версии: v1.1
Аналог функции floor, но возвращает наименьшее целое число, не меньшее x.
Если округление приводит к переполнению (например, ceiling(255, -1)), результат не определён.
Синтаксис
Псевдонимы: ceiling
Аргументы
x— значение для округления.Float*илиDecimal*или(U)Int*N— необязательный параметр. Количество знаков после запятой, до которых нужно округлить. По умолчанию — ноль, что означает округление до целого числа. Может быть отрицательным.(U)Int*
Возвращаемое значение
Возвращает округлённое число того же типа, что и x. Float* или Decimal* или (U)Int*
Примеры
Базовое использование
Отрицательная точность
floor
Появилась в версии: v1.1
Возвращает наибольшее число, меньшее либо равное x, при этом это число кратно 1 / 10 * N, либо ближайшее число соответствующего типа данных, если 1 / 10 * N не представимо точно.
Целочисленные аргументы могут округляться при отрицательном значении аргумента N.
При неотрицательном N функция возвращает x.
Если округление приводит к переполнению (например, floor(-128, -1)), результат не определён.
Синтаксис
Аргументы
x— Значение для округления.Float*илиDecimal*или(U)Int*N— Необязательный параметр. Количество знаков после запятой, до которых нужно округлить. По умолчанию — ноль, что означает округление до целого числа. Может быть отрицательным.(U)Int*
Возвращаемое значение
Возвращает округлённое число того же типа, что и x. Float* или Decimal* или (U)Int*
Примеры
Пример использования
Отрицательная точность
round
Появилась в версии: v1.1
Округляет значение до заданного количества знаков после запятой N.
- Если
N > 0, функция округляет вправо от десятичной запятой. - Если
N < 0, функция округляет влево от десятичной запятой. - Если
N = 0, функция округляет до ближайшего целого числа.
Функция возвращает ближайшее число указанного порядка.
Если входное значение находится на одинаковом расстоянии от двух соседних чисел, функция использует банковское округление для значений типа Float* и округление от нуля для остальных числовых типов (Decimal*).
Если округление приводит к переполнению (например, round(255, -1)), результат неопределён.
Синтаксис
Аргументы
x— Число для округления.Float*илиDecimal*или(U)Int*N— Необязательный параметр. Количество знаков после запятой, до которого выполняется округление. По умолчанию0.(U)Int*
Возвращаемое значение
Возвращает округлённое число того же типа, что и x. Float* или Decimal* или (U)Int*
Примеры
Входные значения типа Float
Десятичные значения
roundAge
Введена в версии v1.1
Принимает число, обозначающее возраст человека, сравнивает его со стандартными возрастными диапазонами и возвращает либо нижнюю, либо верхнюю границу диапазона, в который попадает число.
- Возвращает
0дляage < 1. - Возвращает
17для1 ≤ age ≤ 17. - Возвращает
18для18 ≤ age ≤ 24. - Возвращает
25для25 ≤ age ≤ 34. - Возвращает
35для35 ≤ age ≤ 44. - Возвращает
45для45 ≤ age ≤ 54. - Возвращает
55дляage ≥ 55.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает нижнюю или верхнюю границу диапазона возрастов, в который попадает age. UInt8
Примеры
Пример использования
roundBankers
Введена в: v20.1
Округляет число до заданной десятичной позиции N.
Если округляемое число находится ровно посередине между двумя значениями, функция использует метод, называемый банковским округлением (banker's rounding), который является стандартным методом округления для чисел с плавающей запятой, определённым в IEEE 754.
- Если
N > 0, функция округляет вправо от десятичной точки - Если
N < 0, функция округляет влево от десятичной точки - Если
N = 0, функция округляет до ближайшего целого числа
- Когда округляемое число находится ровно посередине между двумя значениями, оно округляется до ближайшей чётной цифры на заданной десятичной позиции.
Например:
3.5округляется вверх до4,2.5округляется вниз до2. - Функция
roundиспользует такой же способ округления для чисел с плавающей запятой. - Функция
roundBankersтакже округляет целые числа таким же образом, например,roundBankers(45, -1) = 40. - В остальных случаях функция округляет числа до ближайшего целого значения.
С помощью банковского округления можно уменьшить влияние округления чисел на результат их суммирования или вычитания.
Например, просуммируем числа 1.5, 2.5, 3.5, 4.5 с разными вариантами округления:
- Без округления:
1.5 + 2.5 + 3.5 + 4.5 = 12. - Банковское округление:
2 + 2 + 4 + 4 = 12. - Округление до ближайшего целого:
2 + 3 + 4 + 5 = 14.
Синтаксис
Аргументы
x— число для округления.(U)Int*илиDecimal*илиFloat*[, N]— необязательный аргумент. Количество знаков после запятой, до которых нужно округлить. По умолчанию —0.(U)Int*
Возвращаемое значение
Возвращает значение, округлённое методом банковского округления. (U)Int* или Decimal* или Float*
Примеры
Базовое использование
roundDown
Добавлена в версии: v20.1
Округляет число вниз до элемента в указанном массиве. Если значение меньше нижней границы, возвращается нижняя граница.
Синтаксис
Аргументы
num— число, которое нужно округлить вниз.(U)Int*илиDecimal*илиFloat*arr— массив значений, до одного из которых округляетсяnumвниз.Array((U)Int*)илиArray(Float*)
Возвращаемое значение
Возвращает число, округлённое вниз до одного из элементов arr. Если значение меньше нижней границы, возвращается нижняя граница. (U)Int* или Float*
Примеры
Пример использования
roundDuration
Впервые появилась в: v1.1
Округляет число вниз до ближайшего значения из набора часто используемых значений длительности: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000.
Если число меньше единицы, возвращает 0.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает 0 при num < 1. В остальных случаях — одно из: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000. UInt16
Примеры
Пример использования
roundToExp2
Добавлена в версии: v1.1
Округляет число вниз до ближайшей (целой неотрицательной) степени двойки.
Если число меньше единицы, возвращает 0.
Синтаксис
Аргументы
Возвращаемое значение
Возвращает num, округлённое в меньшую сторону до ближайшей (целой неотрицательной) степени двойки, или 0 для num < 1. (U)Int* или Float*
Примеры
Пример использования
trunc
Впервые добавлена в версии v1.1
Аналог функции floor, но возвращает округлённое число с максимальным по модулю значением, не превышающим модуль x.
Синтаксис
Псевдонимы: truncate
Аргументы
x— значение, которое нужно округлить.Float*илиDecimal*или(U)Int*N— необязательный аргумент. Количество знаков после запятой, до которого выполняется округление. По умолчанию — ноль, что означает округление до целого числа.(U)Int*
Возвращаемое значение
Возвращает округлённое число того же типа, что и x. Float* или Decimal* или (U)Int*
Примеры
Базовое использование