TRUNCATE

简介

TRUNCATE
TRUNCATE
函数用于将数值
x
x
截断到小数点后
d
d
位,直接丢弃多余的小数位,不进行四舍五入。

语法

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 时等价于直接取整数部分(向零截断,正负数行为对称)。
联系我们
预约咨询
微信咨询
电话咨询
邮件咨询