Последнее обновление
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> <= 0Decimal(p, <d>), если0 < <d> <= sDecimal(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 |
+----------------+