TRUNCATE_PRESTO

简介

TRUNCATE_PRESTO
TRUNCATE_PRESTO
函数用于将数值截断到指定的小数位数,直接丢弃多余位数,不进行四舍五入。

与同名的

TRUNCATE
TRUNCATE
函数相比,
TRUNCATE_PRESTO
TRUNCATE_PRESTO
不存在浮点精度问题(
TRUNCATE(3.14159, 2)
TRUNCATE(3.14159, 2)
可能返回
3.14158
3.14158
,而
TRUNCATE_PRESTO(3.14159, 2)
TRUNCATE_PRESTO(3.14159, 2)
始终返回
3.14
3.14
),推荐优先使用
TRUNCATE_PRESTO
TRUNCATE_PRESTO

语法

TRUNCATE_PRESTO(x, d)

参数

  • x
    x
    :需要截断的数值类型表达式,支持
    FLOAT
    FLOAT
    DOUBLE
    DOUBLE
    DECIMAL
    DECIMAL
    等数值类型。
  • d
    d
    :截断后保留的小数位数,类型为整数。
    d = 0
    d = 0
    时截断为整数,
    d > 0
    d > 0
    时保留指定位数小数,
    d < 0
    d < 0
    时截断到小数点左侧对应位。

返回结果

  • 返回截断后的数值,类型与输入的
    x
    x
    相同。
  • 截断方式为直接丢弃多余位数,不四舍五入。
  • 负数按绝对值截断后保留符号,例如
    -3.14159
    -3.14159
    截断到 2 位小数返回
    -3.14
    -3.14

示例

  1. 截断正数到 2 位小数:

SELECT TRUNCATE_PRESTO(3.14159, 2); +-----------------------------+ | truncate_presto(3.14159, 2) | +-----------------------------+ | 3.14 | +-----------------------------+

  1. 截断负数到 2 位小数:

SELECT TRUNCATE_PRESTO(-3.14159, 2); +------------------------------+ | truncate_presto(-3.14159, 2) | +------------------------------+ | -3.14 | +------------------------------+

  1. 截断为整数(
    d = 0
    d = 0
    ):

SELECT TRUNCATE_PRESTO(9.99, 0); +--------------------------+ | truncate_presto(9.99, 0) | +--------------------------+ | 9 | +--------------------------+

  1. 截断到小数点左侧(
    d < 0
    d < 0
    ):

SELECT TRUNCATE_PRESTO(314.159, -2); +------------------------------+ | truncate_presto(314.159, -2) | +------------------------------+ | 300 | +------------------------------+

  1. TRUNCATE
    TRUNCATE
    的精度对比:

SELECT TRUNCATE(3.14159, 2), TRUNCATE_PRESTO(3.14159, 2); +----------------------+-----------------------------+ | truncate(3.14159, 2) | truncate_presto(3.14159, 2) | +----------------------+-----------------------------+ | 3.14158 | 3.14 | +----------------------+-----------------------------+

注意事项

  • TRUNCATE_PRESTO
    TRUNCATE_PRESTO
    只截断,不四舍五入。
    TRUNCATE_PRESTO(3.999, 2)
    TRUNCATE_PRESTO(3.999, 2)
    返回
    3.99
    3.99
    ,不是
    4.00
    4.00
  • TRUNCATE
    TRUNCATE
    出现浮点精度异常(如返回
    3.14158
    3.14158
    而非
    3.14
    3.14
    )时,改用
    TRUNCATE_PRESTO
    TRUNCATE_PRESTO
  • 需要四舍五入时请使用
    ROUND
    ROUND
    函数。

相关文档

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询