使用否定参数进行截断和舍入是否相同?
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
答案 0 :(得分:9)
不,行为取决于有效数字的值(在您的情况下,第3位数字(3)是重要数字,因为它低于5 round
而trunc
执行相同的操作
尝试select trunc(125456.76,-4) from dual
(结果为120000)vs select round(125456.76,-4) from dual
(结果为130000)。现在当有效数字为5(或更高)时,trunc
和round
的结果会有所不同。
答案 1 :(得分:1)
ROUND
与给定值的圆形数字有关。
TRUNC
与截断给定值有关。
在给定示例的round
情况下,小数点前第四位的四个位置用0填充。
但是在trunc
的情况下,小数点前的第四位的四个位置替换为0.
答案 2 :(得分:0)
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