【问题标题】:trunc and round function in sqlsql中的trunc和round函数
【发布时间】:2012-07-03 12:35:03
【问题描述】:

trunc 和 round 与否定参数相同吗?

       SQL> select round(123456.76,-4) from dual;

        ROUND(123456.76,-4)
         -------------------
         120000

         SQL> select trunc(123456.76,-4) from dual;

          TRUNC(123456.76,-4)
          -------------------
         120000

【问题讨论】:

    标签: sql oracle truncate rounding negative-number


    【解决方案1】:

    不,行为取决于有效数字的值(在您的情况下,第 3 位(第 3 位)是有效数字,因为它低于 5 roundtrunc 也是如此)

    尝试select trunc(125456.76,-4) from dual(结果为 120000)与 select round(125456.76,-4) from dual(结果为 130000)。现在,当有效数字为 5(或更高)时,truncround 的结果不同。

    【讨论】:

    • @lakshganga:请注意,如果答案解决了您的问题/问题,您可以accept it formally
    【解决方案2】:

    ROUND 与给定值的整数有关。

    TRUNC 与给定值的截断有关。

    在给定示例的round 情况下,小数点前四位到第四位用0 填充。

    但在trunc 的情况下,小数点前四位到第四位替换为0。

    【讨论】:

      【解决方案3】:

      TRUNC - 根据第二个参数,它返回在第二个参数中指定的指定小数位。例如:

      trunc(25.656) -- 25
      trunc(25.656, 1) -- 25.6
      trunc(25.656, 2) -- 25.65
      

      ROUND - 将给定数字四舍五入到最接近的值。例如:

      round(66) -- 70
      round(64) -- 60
      round(65.7) -- 66
      round(65.3) -- 65
      

      【讨论】:

      • 请解释您的代码。并从解释中删除代码格式
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多