Перейти к содержимому
Последнее обновление

FLOOR

Описание​

Округляет десятичные числа с плавающей и фиксированной точкой вниз до заданного числа разрядов и возвращает округлённое число с плавающей или фиксированной точкой.

Синтаксис​

FLOOR(<a>[, <d>])

Параметры​

ПараметрОписание
<a>Параметр с плавающей точкой (Double) или фиксированной точкой (Decimal), задающий значение для округления
<d>Необязательный целочисленный параметр, задающий число разрядов для округления. Положительное число означает округление до следующего десятичного разряда, отрицательное число означает округление до следующего десятичного разряда, а 0 — округление до целого числа. Если параметр не указан, это эквивалентно <d> = 0.

Возвращаемое значение​

Возвращает наибольшее округлённое число, не превышающее <a>, в соответствии со следующими правилами.

Округление выполняется до разряда 1/(10^d), то есть результат должен быть кратен 1/(10^d). Если 1/(10^d) нельзя представить точно, в качестве разряда округления используется ближайшее число соответствующего типа данных.

Для входного значения <a> типа Decimal, если его тип — Decimal(p, s), возвращаемое значение имеет тип:

  • Decimal(p, 0), если <d> <= 0
  • Decimal(p, <d>), если 0 < <d> <= s
  • Decimal(p, s), если <d> > s

Если любой из входных параметров равен NULL, возвращает NULL.

Псевдоним​

  • DFLOOR

Примеры​

select floor(123.456);
+----------------+
| floor(123.456) |
+----------------+
| 123 |
+----------------+
select floor(123.456, 2);
+-------------------+
| floor(123.456, 2) |
+-------------------+
| 123.45 |
+-------------------+
select floor(123.456, -2);
+--------------------+
| floor(123.456, -2) |
+--------------------+
| 100 |
+--------------------+
select floor(123.45, 1), floor(123.45), floor(123.45, 0), floor(123.45, -1);
+------------------+---------------+------------------+-------------------+
| floor(123.45, 1) | floor(123.45) | floor(123.45, 0) | floor(123.45, -1) |
+------------------+---------------+------------------+-------------------+
| 123.4 | 123 | 123 | 120 |
+------------------+---------------+------------------+-------------------+
select floor(x, 2) from ( select cast(123.456 as decimal(6,3)) as x from numbers("number"="5") )t;
+-------------+
| floor(x, 2) |
+-------------+
| 123.45 |
| 123.45 |
| 123.45 |
| 123.45 |
| 123.45 |
+-------------+
select floor(NULL, 2);
+----------------+
| floor(NULL, 2) |
+----------------+
| NULL |
+----------------+