金额转大写

import java.math.BigDecimal;

public class TestBigChar {
    
public static char[] characters = { '''''''''''''''','''' };
    
public static char[] units = {'''''''' ,'','''''','亿'};
    
public static char[] units2 = {''''};
    

    
public static void main(String[] args) {        
        System.out.println(convert(
30000000.84));
    }

    
public static String convert(double d) {        
        
//String val =String.valueOf(d);        
        BigDecimal bb
=new BigDecimal(String.valueOf(d));
        String val 
=bb.toString();         
        String convert 
= "";
        
int index = val.indexOf('.');
        
for (int i = 0; i < val.length(); i++) {
            
            
//处理小数点
            if(i==index){
                
continue;
            }
            convert 
+=characters[Integer.parseInt(val.substring(i, i + 1))];
            
            
//处理整数部分
            if (i < index){
                
int b=i;   
                convert 
+= units[index -(b+1)];                
            }
            
            
//处理小数部分
            if(i>index){                
                convert 
+=units2[i-index-1];
            } 
        }
        
return convert;
    }

}

有一点要说明的是为什么要把double转成BigDecimal呢,这是因为当金额达到到千万时,double的tostring方法会以科学计数法的形式表示,这时程序会因无法解析E而报错,而转换为BigDecimal再tostring方法就不会以科学计数法表示了。
  
posted @ 2009-10-05 23:22  Fskjb  阅读(570)  评论(0编辑  收藏  举报
年年行好运