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的区别。不复杂但容易忽略细节。


