Функции округления
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
< 1. UInt8.num
, округленное вниз до ближайшей (целой неотрицательной) степени двоетки. UInt/Float, эквивалентное типу входных данных.
Пример
Запрос:
Результат:
roundDuration
Принимает число. Если число меньше одного, оно возвращает 0
. В противном случае округляет число вниз до чисел из набора часто используемых длительностей: 1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000
.
Синтаксис
Параметры
Возвращаемое значение
0
, дляnum
< 1.- В противном случае одно из:
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
.
Пример
Запрос:
Результат: