笑看風云

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

          把數(shù)字轉換成中文貨幣表示

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

          import java.math.BigDecimal;

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

          */

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

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

                }

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

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

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

              
          // 負數(shù)的處理
              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: 把數(shù)字轉換成中文貨幣表示  回復  更多評論   

          2010-09-03 10:09 by 笨牛
          10001000.09 竟然輸出
          壹仟零壹仟圓零玖分
          主站蜘蛛池模板: 措勤县| 元氏县| 吉林市| 肇庆市| 张家港市| 永康市| 白银市| 焦作市| 文昌市| 黄陵县| 北京市| 天镇县| 峡江县| 六安市| 故城县| 淄博市| 兴安县| 丹凤县| 盈江县| 济宁市| 五常市| 沙湾县| 老河口市| 白山市| 清涧县| 兰溪市| 浦东新区| 周至县| 上虞市| 隆安县| 津南区| 克东县| 扶沟县| 什邡市| 平凉市| 韩城市| 安塞县| 本溪| 杨浦区| 洪泽县| 岳阳市|