» 网友学堂 » JAVA教程 » 把数字转换成中文货币表示
把数字转换成中文货币表示
作者:ljjk5 发表时间:2007-12-31 12:43 阅读:83次 在百度搜索相关内容

  以下是一个把BigDecimal转化成中文的货币表示的一段代码,博君一哂!
//中文金额单位数组
straChineseUnit=newString[]{"分","角","圆","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟"};
//中文数字字符数组
straChineseNumber=newString[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
   /**
   *Description 将数字金额转换为中文金额
   *@param    <p>BigDecimalbigdMoneyNumber转换前的数字金额</P>
   *@return   String
   调用:myToChineseCurrency("101.89")="壹佰零壹圆捌角玖分"
   myToChineseCurrency("100.89")="壹佰零捌角玖分"
   myToChineseCurrency("100")="壹佰圆整"
   */
   publicStringDoNumberCurrencyToChineseCurrency(BigDecimalbigdMoneyNumber){
     StringstrChineseCurrency="";
     //零数位标记
     booleanbZero=true;
     //中文金额单位下标
     intChineseUnitIndex=0;
     DoPrintMessage("CallingMethodDoNumberCurrencyToChineseCurrency");
     try{
       if(bigdMoneyNumber.intValue()==0)
         return"零圆整";
       //处理小数部分,四舍五入
       doubledoubMoneyNumber=Math.round(bigdMoneyNumber.doubleValue()*100);
       //是否负数
       booleanbNegative=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;
             }
           }
           //万、亿数位的处理
           elseif(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(Exceptione){
       DoPrintMessage("ExceptionReason :CallMethodDoNumberCurrencyToChineseCurrencyError");
       DoPrintMessage("ExceptionMessage:"+e.getMessage());
       e.printStackTrace();
       return"";
     }
     returnstrChineseCurrency;
   }

#Advertisement