【 认真工作,享受生活 】

笑中千关过,愁内百事哀,争胜是祸,繁华似梦,平淡是福。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

如何将字符串或者数字转换成大写货币

Posted on 2009-01-04 11:48  qiqi  阅读(416)  评论(0编辑  收藏  举报
注:示例程序会将字符串或者数字转换成大写货币的表现形式。可以把这一部分放到字符串处理的公共类 StringUtils 中,和 DateUtils (《时间日期的一些处理方法)一起,作为项目的公共部分 CommonUtils ,供其它程序进行调用。CommonUtils 就好像是一个辅助工具,使我们能更好的完成项目。我会逐步去添加完善 CommonUtils ,你也可以从现在开始创建自己的代码库,毕竟有很多有用的代码是可以复用的。省时省力,何乐而不为?


主要内容:
MoneyConvert.java --- 本文当中只涉及如何将字符串或者数字转换成大写货币的方法

主要功能:
1.   String convertToCapitalMoney(String moneyStr) 
      将字符串转换成中文的大写货币值

2.   String convertToCapitalMoney(double moneyValue)
      将数字转换成中文的大写货币值



文件:MoneyConvert.java


package  Common.Utils.StringUtils;

/**
 * 
 * <p>Description: 字符串处理的公共类</p>
 * <p>Copyright 2006 mjn.</p>
 * 
@author  ma jia nan
 * @Create Date : 2006-10-16
 * @Version : 1.0
 
*/

public   class  MoneyConvert  {

    
/**
     * 将字符串转换成中文的大写货币值
     * 
     * 
@param   moneyStr
     * 
@return

     
*/

    
public   static  String convertToCapitalMoney(String moneyStr)  {
        
double  money  =   0
;

        
try  
{
            money 
=
 Double.parseDouble(moneyStr);
        }
  catch  (Exception e)  {
        }


        
return  convertToCapitalMoney(money);
    }


    
/**
     * 将数字转换成中文的大写货币值
     * 
     * 
@param   moneyValue
     * 
@return

     
*/

    
public   static  String convertToCapitalMoney( double  moneyValue)  {
        
double  money  =  moneyValue  +   0.005 ;     // 防止浮点数四舍五入造成误差

        
        String Result 
=   ""
;
        String capitalLetter 
=   " 零壹贰叁肆伍陆柒捌玖 "
;
        String monetaryUnit  
=   " 分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟亿拾佰仟 "
;
        String tempCapital, tempUnit;
        
        
int  integer;             // 钱的整数部分

  
        int  point;                // 钱的小数部分        
  
        int  tempValue;       // 钱的每一位的值
        
        integer 
=  ( int
) money; 
        point   
  = ( int ) (100 * (money - (float
) integer)); 
        
        
if  (integer  ==   0
)
               Result 
=   " 零圆 "
;

        
/*     
         *     货币整数部分操作
         *     1.    依次取得每一位上的值
         *     2.    转换成大写
         *     3.    确定货币单位
         
*/

        
for  ( int  i  =   1 ; integer  >   0 ; i ++ {
            tempValue 
=  (integer  %   10
); 
            tempCapital 
=  capitalLetter.substring(tempValue, tempValue  +   1
);
            tempUnit 
=  monetaryUnit.substring(i  +   1 , i  +   2
); 
            Result 
=  tempCapital  +  tempUnit  +
 Result;
            integer 
=  integer  /   10
;
        }

        
        
/*
         *    货币小数部分操作
         
*/

        tempValue 
=  (point  /   10 ); 
        
for  ( int  i  =   1 ; i  >   - 1 ; i --
{
            tempCapital 
=  capitalLetter.substring(tempValue, tempValue  +   1
);
            tempUnit 
=  monetaryUnit.substring(i, i  +   1
); 
            Result 
=  Result  +  tempCapital  +
 tempUnit;
            tempValue 
=  point  %   10

        }

        
        
return  Result;
    }

}




测试代码:


public   static   void  main(String[] args)  {
      String money 
=  MoneyConvert.convertToCapitalMoney( " 3456789.347 "
);
      System.out.println(money);

      String money1 
=  MoneyConvert.convertToCapitalMoney( 3456789.347
);
      System.out.println(money1);
}

结果:


叁佰肆拾伍万陆仟柒佰捌拾玖圆叁角伍分
叁佰肆拾伍万陆仟柒佰捌拾玖圆叁角伍分