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

来源:互联网 发布:linux下的caffe安装 编辑:程序博客网 时间:2024/05/16 04:57
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
 在业务系统中,不同的客户对小数的处理有不同的方法

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

处理方法

IDNUMBER(1)    ,                                                      --设置ID

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

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

存储过程实现代码如下

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

    SELECT amountdot, nvl(rounding,0)INTOv_amountdot,v_roundingFROM 处理方法
            WHEREid=SALE_PLACE_ID;
    v_keep:=Length(v_amountdot)- instr(v_amountdot,'.'); --要保留的小数位数
    IFv_rounding=9THEN   --处理全舍弃
       v_Amount:=trunc(n_Amount,v_keep);
    ENDIF;
    
    IFv_rounding=4THEN    --处理四舍五入1

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击