笑看風云

          一切從頭開始
          posts - 28, comments - 1, trackbacks - 0, articles - 2

          把數字轉換成中文貨幣表示

          Posted on 2008-07-10 19:43 笑看風云 閱讀(260) 評論(1)  編輯  收藏 所屬分類: Java
                  最近在做開發的時候,有一部分功能要實現把數字轉換成中文貨幣表示并顯示給客戶端,想了好久不知道如何寫,到google上搜了一下,結果這方面的資料還比較多,看了一下別人寫的,感覺很不錯,就把它復制過來,根據實際需要改了一下,已經測試成功了.代碼如下:
          package test;

          import java.math.BigDecimal;

          public class StrangeCurrency {
          /**
          * Description 將數字金額轉換為中文金額

          */

          public static String DoNumberCurrencyToChineseCurrency(
              
          double bigdMoneyNumber) {
             
          // 中文金額單位數組
             String[] straChineseUnit = """""""""""""""",
               
          """""""""""" }
          ;
             
          // 中文數字字符數組
             String[] straChineseNumber = """""""""""""""",
               
          """" }
          ;
             String strChineseCurrency 
          = "";
             
          // 零數位標記
             boolean bZero = true;
             
          // 中文金額單位下標
             int ChineseUnitIndex = 0;
             
          // DoPrintMessage("Calling Method DoNumberCurrencyToChineseCurrency");
             try {
              
          if (bigdMoneyNumber == 0)
               
          return "零圓整";
              
          // 處理小數部分,四舍五入
              double doubMoneyNumber = Math.round(bigdMoneyNumber * 100);
              
          // 是否負數
              boolean bNegative = doubMoneyNumber < 0;
              
          // 取絕對值
              doubMoneyNumber = Math.abs(doubMoneyNumber);
              
          // 循環處理轉換操作
              while (doubMoneyNumber > 0{
               
          // 整的處理(無小數位)
               if (ChineseUnitIndex == 2 && strChineseCurrency.length() == 0)
                strChineseCurrency 
          = strChineseCurrency + "";
               
          // 非零數位的處理
               if (doubMoneyNumber % 10 > 0{
                strChineseCurrency 
          = straChineseNumber[(int) doubMoneyNumber % 10]
                  
          + straChineseUnit[ChineseUnitIndex]
                  
          + strChineseCurrency;
                bZero 
          = false;
               }

               
          // 零數位的處理
               else {
                
          // 元的處理(個位)
                if (ChineseUnitIndex == 2{
                 
          // 段中有數字
                 if (doubMoneyNumber > 0{
                  strChineseCurrency 
          = straChineseUnit[ChineseUnitIndex]
                    
          + strChineseCurrency;
                  bZero 
          = true;
                 }

                }

                
          // 萬、億數位的處理
                else if (ChineseUnitIndex == 6 || ChineseUnitIndex == 10{
                 
          // 段中有數字
                 if (doubMoneyNumber % 1000 > 0)
                  strChineseCurrency 
          = straChineseUnit[ChineseUnitIndex]
                    
          + strChineseCurrency;
                }

                
          // 前一數位非零的處理
                if (!bZero)
                 strChineseCurrency 
          = straChineseNumber[0]
                   
          + strChineseCurrency;
                bZero 
          = true;
               }

               doubMoneyNumber 
          = Math.floor(doubMoneyNumber / 10);
               ChineseUnitIndex
          ++;
              }

              
          // 負數的處理
              if (bNegative)
               strChineseCurrency 
          = "" + strChineseCurrency;
             }
           catch (Exception e) {
              
          // DoPrintMessage("Exception Reason : Call Method
              
          // DoNumberCurrencyToChineseCurrency Error");
              
          // DoPrintMessage("Exception Message : " + e.getMessage());
              e.printStackTrace();
              
          return "";
             }

             
          return strChineseCurrency;
          }



          /**
          * @param args
          */
          //測試代碼
          public static void main(String[] args) {
             double rmb=23434.89;
             StrangeCurrency sc=new StrangeCurrency();
             String s=sc.DoNumberCurrencyToChineseCurrency(rmb);
              System.out.println(s);
             }

          }

          Feedback

          # re: 把數字轉換成中文貨幣表示  回復  更多評論   

          2010-09-03 10:09 by 笨牛
          10001000.09 竟然輸出
          壹仟零壹仟圓零玖分
          主站蜘蛛池模板: 涞水县| 岫岩| 太湖县| 离岛区| 凌源市| 英吉沙县| 仁寿县| 铁力市| 贵州省| 合江县| 仪征市| 丹巴县| 博湖县| 伊春市| 建瓯市| 常德市| 铜梁县| 同心县| 吴堡县| 施甸县| 开远市| 仁怀市| 肥城市| 兴化市| 江华| 衡南县| 响水县| 永年县| 岚皋县| 惠安县| 广宗县| 瓮安县| 嘉祥县| 西安市| 溧阳市| 齐河县| 龙里县| 江华| 定远县| 蓝山县| 陇西县|