TRUNCATE 函数用于截断数值到指定小数位而不四舍五入。语法为 TRUNCATE(X, D),X 为数值,D 为保留的小数位数;D 为负数时截断整数部分。例如:TRUNCATE(123.4567, 2)返回 123.45,TRUNCATE(123.999, 0)返回 123,TRUNCATE(123.456, -1)返回 120,TRUNCATE(-123.456, 1)返回 -123.4。适用于需精确控制精度且避免进位误差的场景,如财务计算,与 ROUND 函数的主要 区别 在于不进行四舍五入,仅舍去多余位数。

mysql的 TRUNCATE 函数 用于将数值截断到指定的小数位数,不会进行四舍五入。它和 ROUND 函数不同,TRUNCATE 是直接去掉多余位数,保留你需要的部分。
基本语法
TRUNCATE(X, D)
其中:
- X:要处理的数值
- D:保留的小数位数。如果 D 为负数,表示将小数点左边的位数也截断
常见用法示例
1. 截取小数点后 2 位(不四舍五入)
select TRUNCATE(123.4567, 2); — 结果:123.45
2. 去掉小数部分
SELECT TRUNCATE(123.999, 0); — 结果:123
3. 截断整数部分(D 为负数)
SELECT TRUNCATE(123.456, -1); — 结果:120,即十位以下归零SELECT TRUNCATE(123.456, -2); — 结果:100,百位以下归零
4. 负数同样适用
SELECT TRUNCATE(-123.456, 1); — 结果:-123.4
使用场景建议
当你需要精确控制数值精度,又不想触发四舍五入时,比如财务计算中避免进位误差,TRUNCATE 比 ROUND 更合适。
注意它只是“截断”,不是“取整”,所以正负数都只舍不入。
基本上就这些,用起来简单直接,关键是理解它和 ROUND 的 区别。不复杂但容易忽略细节。


