TRUNCATE
简介
TRUNCATE
TRUNCATE
函数用于将数值
x
x
截断到小数点后
d
d
位,直接丢弃多余的小数位,不进行四舍五入。
⚠️ 注意:
TRUNCATE
TRUNCATE
存在浮点精度问题,截断结果可能与预期不符(例如
TRUNCATE(3.14159, 2)
TRUNCATE(3.14159, 2)
返回
3.14158
3.14158
而非
3.14
3.14
)。如果需要精确截断,推荐使用
TRUNCATE_PRESTO
TRUNCATE_PRESTO
替代。
语法
TRUNCATE(x, d)
参数
x
x
:需要截断的数值,支持 FLOAT
FLOAT
、DOUBLE
DOUBLE
类型。
d
d
:保留的小数位数,类型为 INT
INT
。d
d
为正数时保留指定位小数;d
d
为 0 时截断为整数;d
d
为负数时截断到小数点左边对应位数。
返回结果
返回与
x
x
相同类型的数值。
示例
基本用法:
SELECT TRUNCATE(3.14159, 2);
-- 结果:3.14158(注意:受浮点精度影响,实际返回值可能与预期不符)
SELECT TRUNCATE(3.14500, 2);
-- 结果:3.14500
SELECT TRUNCATE(-3.14159, 2);
-- 结果:-3.14160(注意:受浮点精度影响,实际返回值可能与预期不符)
截断为整数(
d = 0
d = 0
):
SELECT TRUNCATE(9.99, 0);
-- 结果:9
SELECT TRUNCATE(-9.99, 0);
-- 结果:-9
d
d
为负数时截断到整数左边:
SELECT TRUNCATE(123.456, -1);
-- 结果:120
SELECT TRUNCATE(123.456, -2);
-- 结果:100
注意事项
TRUNCATE
TRUNCATE
直接丢弃多余的小数位,不进行四舍五入。
- 受浮点数内部表示精度影响,结果可能与直觉不符,例如
TRUNCATE(3.14159, 2)
TRUNCATE(3.14159, 2)
实际返回 3.14158
3.14158
,TRUNCATE(-3.14159, 2)
TRUNCATE(-3.14159, 2)
实际返回 -3.14160
-3.14160
。
- 如需精确截断,使用
TRUNCATE_PRESTO
TRUNCATE_PRESTO
,它基于精确十进制运算,不受浮点精度问题影响。
d
d
为 0 时等价于直接取整数部分(向零截断,正负数行为对称)。