Функции округления
floor
Возвращает наибольшее округленное число, меньшее или равное x
. Округленное число — это кратное 1 / 10 * N, или ближайшее число соответствующего типа данных, если 1 / 10 * N неточным.
Целочисленные аргументы могут быть округлены с отрицательным аргументом N
, при этом при неотрицательном N
функция возвращает x
, т.е. не делает ничего.
Если округление вызывает переполнение (например, floor(-128, -1)
), результат неопределен.
Синтаксис
Параметры
x
- Значение для округления. Float*, Decimal*, или (U)Int*.N
. (U)Int*. По умолчанию равно нулю, что означает округление до целого числа. Может быть отрицательным.
Возвращаемое значение
Округленное число того же типа, что и x
.
Примеры
Запрос:
Результат:
Запрос:
Результат:
ceiling
Как floor
, но возвращает наименьшее округленное число, большее или равное x
.
Синтаксис
Псевдоним: ceil
truncate
Как floor
, но возвращает округленное число с наибольшим абсолютным значением, которое имеет абсолютное значение, меньшее или равное x
.
Синтаксис
Псевдоним: trunc
.
Пример
Запрос:
round
Округляет значение до заданного количества десятичных знаков.
Функция возвращает ближайшее число заданного порядка. Если исходное значение имеет равное расстояние до двух соседних чисел, функция использует банковское округление для Float* входов и округляет от нуля для других типов чисел (Decimal*).
Синтаксис
Аргументы
x
— Число для округления. Float*, Decimal*, или (U)Int*.N
— Количество десятичных знаков для округления. Целое число. По умолчанию равно0
.- Если
N > 0
, функция округляет вправо от десятичной точки. - Если
N < 0
, функция округляет влево от десятичной точки. - Если
N = 0
, функция округляет до ближайшего целого числа.
- Если
Возвращаемое значение:
Округленное число того же типа, что и x
.
Примеры
Пример с входами Float
:
Пример с входами Decimal
:
Чтобы сохранить завершающие нули, включите настройку output_format_decimal_trailing_zeros
:
Примеры округления до ближайшего числа:
Банковское округление.
См. Также
roundBankers
Округляет число до заданной десятичной позиции.
Если число для округления находится на половине между двумя числами, функция использует банковское округление. Банковское округление — это метод округления дробных чисел. Когда число для округления находится на половине между двумя числами, оно округляется до ближайшей четной цифры на заданной десятичной позиции. Например: 3.5 округляется до 4, 2.5 округляется до 2. Это метод округления по умолчанию для чисел с плавающей запятой, определенный в IEEE 754. Функция 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.
Синтаксис
Аргументы
-
N > 0
— Функция округляет число до заданной позиции вправо от десятичной точки. Пример:roundBankers(3.55, 1) = 3.6
. -
N < 0
— Функция округляет число до заданной позиции влево от десятичной точки. Пример:roundBankers(24.55, -1) = 20
. -
N = 0
— Функция округляет число до целого числа. В этом случае аргумент можно опустить. Пример:roundBankers(2.5) = 2
. -
N
— Количество десятичных знаков для округления. Целое число. По умолчанию равно0
.- Если
N > 0
, функция округляет вправо от десятичной точки. - Если
N < 0
, функция округляет влево от десятичной точки. - Если
N = 0
, функция округляет до ближайшего целого числа.
- Если
Возвращаемое значение
Значение, округленное методом банковского округления.
Примеры
Запрос:
Результат:
Примеры банковского округления:
См. Также
roundToExp2
Принимает число. Если число меньше одного, возвращает 0
. В противном случае округляет число до ближайшей (целой неотрицательной) степени двойки.
Синтаксис
Параметры
Возвращаемое значение
0
, дляnum
. UInt8.num
округленный до ближайшей (целой неотрицательной) степени двойки. UInt/Float, эквивалентный входному типу.
Пример
Запрос:
Результат:
roundDuration
Принимает число. Если число меньше одного, возвращает 0
. В противном случае округляет число до чисел из множества общеизвестных длительностей: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000
.
Синтаксис
Параметры
Возвращаемое значение
0
, дляnum
.- В противном случае одно из:
1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000
. UInt16.
Пример
Запрос:
Результат:
roundAge
Принимает число в различных распространенных диапазонах человеческого возраста и возвращает либо максимум, либо минимум в этом диапазоне.
Синтаксис
Параметры
Возвращаемое значение
- Возвращает
0
, для . - Возвращает
17
, для . - Возвращает
18
, для . - Возвращает
25
, для . - Возвращает
35
, для . - Возвращает
45
, для . - Возвращает
55
, для .
Тип: UInt8.
Пример
Запрос:
Результат:
roundDown
Принимает число и округляет его вниз до элемента в указанном массиве. Если значение меньше нижней границы, возвращается нижняя граница.
Синтаксис
Параметры
num
: Число для округления вниз. Numeric.arr
: Массив элементов, до которых нужно округлитьage
. Array типа UInt/Float.
Возвращаемое значение
- Число, округленное вниз до элемента в
arr
. Если значение меньше нижней границы, возвращается нижняя граница. UInt/Float тип, выведенный из типаarr
.
Пример
Запрос:
Результат: