超级简单的大写金额转换--阿拉伯数字转中文大写

来源:互联网 发布:国际日期变更线的算法 编辑:程序博客网 时间:2024/05/17 03:32

public class ConvertMoney {

 
 public static void main(String[] args) {
  
  System.out.println(convert(6800000300.23D));
 }
 /**
  * 阿拉伯数字转换为中文大写--只支持到千亿位,不支持小数转换
  * @param args
  */
 public static String convert(double n) {
  
  char[] d = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
  char[] d2={'元','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟'};
  
  String str=String.format("%.0f", n);
  StringBuilder sb=new StringBuilder();
  
  System.out.println(str);
  if(str.length()>d2.length) {
   System.out.println("金额太大,不支持转换!");
   return null;
  }
  
  for(int i=0;i<str.length();i++) {
   
   sb.append(d[str.charAt(i)-'0']);
   sb.append(d2[str.length()-i-1]);
  }
  str=sb.toString();
  str=str.replaceAll("零[拾佰仟]", "零");
  str=str.replaceAll("零{2,}", "零");
  str=str.replaceAll("零([元万亿])", "$1");
  str=str.replaceAll("亿万", "亿");
  
  return str;
 }
}

 

以上程序输出:

6800000300
陆拾捌亿零叁佰元

原创粉丝点击