orcale数字截取处理

一、关于number本身

declare
  i number(5,2);--整数位=3,小数位=2,总位数=5
begin
  i := 205.3456;
  dbms_output.put_line(i);--打印205.35
end;
结论:
1、  当数字i的小数位超出nmber规定的2时,系统不会报错,对i的处理是根据小数位四舍五入。


declare
  i number(5,2);
begin
  i := 2051.3456;
  dbms_output.put_line(i);--系统报错
end;
结论:
2、  当数字i的整数位超出限制的3位时,系统会报错。
3、  整数位一定要满足number限制,小数位可以不满足number限制,但是会四舍五入处理。


declare
  i number(5);
begin
  i := 205.5456;
  dbms_output.put_line(i);--打印206
end;
结论:
4、  如果number只写了整数位,那么i有小数位的话也不会报错,要从当前小数点四舍五入。


declare
  i number(5,2);
begin
  i := 205;
  dbms_output.put_line(i);--打印205,而非205.00
end;

declare
  i number(5,2);
begin
  i := 205.6;
  dbms_output.put_line(i);--打印205.6,而非205.60
end;
结论:
5、  如果变量i规定了小数位,但是实际赋的值没有小数位或者小数位少于规定的,不会出错,最后得到的值就是实际的值。
6、  如果在数据库中number字段规定了小数位,那么存储进去的值少于小数位会自动补0。


二、trunc与 round比较

trunc (89.985,2) = 89.98—小数点后2位开始

trunc (89.985) = 89—当前小数点开始,取整

trunc (89.985,-1) = 80—小数点前1位开始,截完补0

trunc (84.985,-1) = 80

trunc (405.635,-3) = 0

trunc (505.635,-3) = 0

--trunc直接截除

round(89.985,2) = 89.99—小数点后2位开始,四舍五入

round(89.985) = 90—当前小数点开始,四舍五入

round(89.985,-1) = 90—小数点前1位开始,四舍五入,然后补0

round(84.985,-1) = 80

round(405.635,-3) = 0

round(505.635,-3) = 1000

--round要对小数点后面的数字判断,然后四舍五入


三、ceil和floor比较(取整,不涉及到四舍五入的问题)

1)正数示例

       ceil(2.3355) = 3 --取整(大)

       trunc(2.3355) = 2 --取整(直接截)

       floor(2.3355) = 2 —取整(小)

2)负数示例

       ceil(-2.3355) = -2 --取整(大)

       trunc(-2.3355) = -2 --取整(直接截)

       floor(-2.3355) = -3 —取整(小)


四、绝对值abs

       abs(-2.3355) = 2.3355

       abs(2.3355) = 2.3355

 


例子: 结果应该是205.53,205.52才对啊!为什么是205.53,205.53了呢?
declare
  i number(5,2);
  v_trunc number(5,2);
begin
  i := 205.525888888;--这里实际的i=205.53,因为number限制了。
  select trunc(i,2) into v_trunc from dual;--所以这里trunc函数中的i=205.53
  dbms_output.put_line(i);
  dbms_output.put_line(v_trunc);
end;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值