- 类别:
数值函数 (舍入和截断)
FLOOR¶
返回来自 input_expr
的值,这些值四舍五入到最接近的相等或更小的整数值,或者四舍五入到具有指定小数位数、最接近的相等或更小的值。
- 另请参阅:
语法¶
FLOOR( <input_expr> [, <scale_expr> ] )
实参¶
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_expr
或scale_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 | +----------------+-----------------+
此示例演示了具有参数的 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) ;输出:
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 | +----------+-------+-----------------+