在业务系统中处理小数精度,四舍五入,全舍弃,全进位的方法
在业务系统中,不同的客户对小数有不同的处理方式
,通过设置保留的小数位数和小数点后尾数的处理方式,可以灵活满足客户需求。
处理方法表
id号(1),-set id
金额点数(4,2)默认0.01,-金额精度1:精确到人民币0.1:精确到角度0.01:精确到四舍五入数字(1),-四舍五入边界-9:四舍五入0:。
建立oracle函数,传入设置id,传入金额,返回处理后的金额。
存储过程实现代码如下
或者替换函数get _ real _ number(-根据处理方法id获取已处理金额-计算金额
id in number,-处理方法ID
n _ amount in number]
-
-由Andrew创建
-。-修改时间修饰符实现的函数描述
-9全进0,全进4,全进5
-十进制字符
v_keep数;-保留的小数位
v _舍入数字;-舍入边界
v _ amount number:= 0;-退回金额
begin
从处理方法表
中选择amount dot,nvl (rounding,0)到v _ amount dot,v _ rounding,其中id = sale _ place _ id
v _ keep:= length(v _ amount dot)-instr(v _ amount dot,',') ;-保留的小数位数
如果v _ rounding = 9那么-处理所有丢弃
v _ amount: = trunc (n _ amount,v _ keep);
end if;
如果v _ rounding = 4那么-处理舍入
v _ amount: = round (n _ amount,v _ keep);
end if;
如果v _ rounding = 0那么-处理全进位
v _ amount: = trunc (n _ amount,v _ keep);-小数刚好等于所需数
如果v _ amount n _ amount那么-如果截断的数与原数不同,则输入1
v _ amount:= v _ amount+to _ number(v _ amount dot);
end if;
返回v _ amount
异常
当其他人随后返回n _ amount
end get _ real _ number
0条评论