类别:

数值函数 (舍入和截断)

FLOOR

返回来自 input_expr 的值,这些值四舍五入到最接近的相等或更小的整数值,或者四舍五入到具有指定小数位数、最接近的相等或更小的值。

另请参阅:

CEILROUNDTRUNCATE、TRUNC

语法

FLOOR( <input_expr> [, <scale_expr> ] )
Copy

实参

input_expr

要执行操作的值或表达式。数据类型应为数值数据类型之一,例如 FLOAT 或 NUMBER。

scale_expr

输出应包含在小数点后的位数。表达式的计算结果应为 -38 到 +38 之间的整数。

默认 scale_expr 值为零,这意味着该函数会移除小数点后的所有数字。

有关负小数位数的信息,请参阅下面的使用说明。

返回

返回值的数据类型是 NUMBER (精确度、范围)。

如果输入大小大于或等于零,则输出范围通常与输入范围匹配。

如果输入大小为负,则输出范围为 0。

例如:
  • FLOOR(3.14, 1) 返回的数据类型为 NUMBER(4, 1)。

  • FLOOR(3.14, 0) 返回的数据类型为 NUMBER(4, 0)。

  • FLOOR(33.33, -1) 返回的数据类型为 NUMBER(5, 0)。

如果大小为零,则该值实际上是一个整数。

使用说明

  • 如果 scale_expr 为负数,则指定需要调整数字的小数点 之前 的位数。例如,如果大小为 -2,则结果是 100 的倍数。

  • 如果 scale_expr 大于输入表达式大小,则该函数不生效。

  • 如果 input_exprscale_expr 为 NULL,则结果为 NULL。

  • 向下舍入负数时,值离 0 更远。例如,FLOOR(-1.1) 的值是 -2 而不是 -1。

  • 如果向下舍入数字使数字超出数据类型的值范围,则将返回错误。

示例

此示例展示了不带 scale_expr 参数的函数:

SELECT FLOOR(135.135), FLOOR(-975.975);
+----------------+-----------------+
| FLOOR(135.135) | FLOOR(-975.975) |
|----------------+-----------------|
|            135 |            -976 |
+----------------+-----------------+
Copy

此示例演示了具有参数的 scale_expr 函数,包括将大小设置为负数的函数:

创建并填写表:

CREATE TABLE test_floor (n FLOAT, scale INTEGER);
INSERT INTO test_floor (n, scale) VALUES
   (-975.975, -1),
   (-975.975,  0),
   (-975.975,  2),
   ( 135.135, -2),
   ( 135.135,  0),
   ( 135.135,  1),
   ( 135.135,  3),
   ( 135.135, 50),
   ( 135.135, NULL)
   ;
Copy

输出:

SELECT n, scale, FLOOR(n, scale)
  FROM test_floor
  ORDER BY n, scale;
+----------+-------+-----------------+
|        N | SCALE | FLOOR(N, SCALE) |
|----------+-------+-----------------|
| -975.975 |    -1 |        -980     |
| -975.975 |     0 |        -976     |
| -975.975 |     2 |        -975.98  |
|  135.135 |    -2 |         100     |
|  135.135 |     0 |         135     |
|  135.135 |     1 |         135.1   |
|  135.135 |     3 |         135.135 |
|  135.135 |    50 |         135.135 |
|  135.135 |  NULL |            NULL |
+----------+-------+-----------------+
Copy
语言: 中文