【问题标题】: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 round 和 trunc 也是如此)
尝试select trunc(125456.76,-4) from dual(结果为 120000)与 select round(125456.76,-4) from dual(结果为 130000)。现在,当有效数字为 5(或更高)时,trunc 和 round 的结果不同。
【解决方案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