在业务系统中处理小数精度, 四舍五入,全舍弃,全进位的方法

2016-01-29 16:51 44 1 收藏

在业务系统中处理小数精度, 四舍五入,全舍弃,全进位的方法,在业务系统中处理小数精度, 四舍五入,全舍弃,全进位的方法

【 tulaoshi.com - SQLServer 】

 在业务系统中,不同的客户对小数的处理有不同的方法

通过在设置保留的小数位数,以及小数位数以后的尾数的处理方法,可以灵活的满足客户要求

处理方法表

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)
ID NUMBER(1)    ,                                                       --设置ID

AMOUNTDOT      NUMBER(4,2) DEFAULT 0.01,  --金额精确度 1: 精确到元  0.1:精确到角  0.01:精确到分ROUNDING       NUMBER(1) ,                                  --舍入分界  -- 9: 全舍  0: 全入  4:四舍5入   

建立ORACLE函数,传入设置ID,传入金额,返回处理过的金额

存储过程实现代码如下

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)

create or replace function Get_Real_Number (  --根据处理方法ID,取得处理后的金额-计算的金额
            ID IN NUMBER, -- 处理方法ID
            n_Amount IN NUMBER)    
  -----------------------------------------------------------------------
  --  用  途   自定义数据精度处理。
  --  创建者  :Andrew
  -----------------------------------------------------------------------
  --  修改记录列表:(按日期的先后顺序逆序排列)
  --  修改时间     修改人      实现的功能说明
   -- 9 全舍  0 全入  4四舍5入 
  -----------------------------------------------------------------------
return NUMBER-- 返回的金额
IS
       v_amountdot VARCHAR2(5);      --小数位数字符
       v_keep      NUMBER ;          --保留的小数位数
       v_rounding  NUMBER ;        --舍入分界
       v_Amount NUMBER:=0 ;         --返回的金额
BEGIN

     SELECT  amountdot,  nvl(rounding,0) INTO v_amountdot,v_rounding FROM  处理方法表
             WHERE id = SALE_PLACE_ID;
     v_keep := Length(v_amountdot) -  instr(v_amountdot,'.') ;  --要保留的小数位数
     IF v_rounding = 9 THEN   --处理全舍弃
        v_Amount := trunc(n_Amount,v_keep);
     END IF;
    
     IF v_rounding = 4 THEN    --处理四舍五入
        v_Amount := round(n_Amount,v_keep);
     END IF;
    
     IF v_rounding = 0 THEN  --处理全进位
            v_Amount := trunc(n_Amount,v_keep);   --小数为数刚好等于要求保留的数
           IF v_Amount < n_Amount THEN   --如果截取后的数与原来的数字不同,进1
           v_Amount := v_Amount + to_number(v_amountdot);
     END IF;

     RETURN v_Amount;

   &nb

来源:http://www.tulaoshi.com/n/20160129/1499643.html

延伸阅读
标签: 办公软件
  在我们日常的实际工作中,特别是财务计算中常常遇到四舍五入的问题。虽然,Excel的单元格格式中允许定义小数位数,但是在实际操作中我们发现,其实数字本身并没有真正实现四舍五入。如果采用这种四舍五入的方法,在财务运算中常常会出现误差,而这是财务运算所不允许的。     如图1,A1:A5是原始数据,B1:B5是...
胃不好 饮食需遵循四舍五入原则 四舍:油炸食物、腌制食物、生冷食物、豆类食物。 1、油炸食物 油炸食品总的来说都是不卫生不健康的,特别是对于肠胃病患者来说。炸鸡块属于高脂肪食物,不利于消化,人体就会自动分泌出更多的胃酸,会加重消化道负担,不仅影响你的肠胃,而且导致肥胖,吃多了还会引起恶心甚至腹泻,对...
标签: 办公软件
在我们日常的实际工作中,特别是财务计算中常常遇到四舍五入的问题。虽然,Excel的单元格格式中允许定义小数位数,但是在实际操作中我们发现,其实数字本身并没有真正实现四舍五入。如果采用这种四舍五入的方法,在财务运算中常常会出现误差,而这是财务运算所不允许的。 如图1,A1:A5是原始数据,B1:B5是通过设置单元格格式,对其...
对小数进行四舍五入的计算,在日常办公、做统计报表、仓库报表、财务报表是经常会遇到。之前使用的方法貌似很麻烦,但在Excel中却很轻松的办到。下面通过实例为大家介绍下Excel2007中如何对一些小数进行四舍五入计算,如果你还不会,可不要错过此学习机会。 简要概述 首先打开工作簿并输入一些数据,随后选中单元格,并在开始功能区单击&ldqu...
当我们在使用Excel电子表格制作数据报表时,为了避免大量小数的运算,常常会用到四舍五入的方法,但是这样做可能会造成数值运算的误差,而且不容易找到原因。 描述:0.235+0.235+0.236=0.706 利用单元格式成0.24+0.24+0.24=0.71想将结果改为0.72有什么公式能将结果改。解决:工具-选项-重新计算-以显示精度为准。注意,最好操作后再改回来。 ...

经验教程

936

收藏

27
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部