在業務系統中處理小數精度, 四捨五入,全捨棄,全進位的方法

來源:互聯網
上載者:User

在業務系統中,不同的客戶對小數的處理有不同的方法

通過在設定保留的小數位元,以及小數位元以後的尾數的處理方法,可以靈活的滿足客戶要求

處理方法表

 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,傳入金額,返回處理過的金額

預存程序實現代碼如下

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;

     exception when OTHERS then RETURN n_Amount;                                            

END Get_Real_Number;


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.