首页
JAVA笔记
数据库笔记
混乱记忆
小站记
您现在的位置
java 将数值转换成中文大写
简介: java 把一个整数转换成中文表示方式,将一个数值转换成对应的中文大写单位大写,十 百 千 万 。例如可把2047483047转成二十亿四千七百四十八万三千零四十七。

可以把一个整数转换成中文表示方式,

项目中用到,自己花了一些时间写了个,希望能帮助到有需要的人。

 

import java.text.DecimalFormat;

public class MoneyConvert {
// 壹贰叁肆伍陆柒捌玖拾佰仟万亿
// static String[] num = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
 static String[] num = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
 static String[] unit1 = { "", "拾", "佰", "仟" };
 static String[] unit2 = { "", "万", "亿" };
 static String[] unit3 = {"角", "分"};

 public static void main(String[] args) {
  String aaa = "100100001.107";
  System.out.print(toChinese(aaa));
 }

 
 private static String toChinese(String str){
  Double db = Double.valueOf(str);
 
     DecimalFormat decimalFormat = new DecimalFormat("0.0#");//格式化设置 
     str = decimalFormat.format(db);
  int point = str.lastIndexOf(".");
 
   String prefix = str.substring(0, point);
   String suffix = str.substring(point+1);
   return numberToChineseCharactersPrefix(Integer.valueOf(prefix), 0)+numberToChineseCharactersSuffix(suffix);
 
}
 
 private static String numberToChineseCharactersPrefix(int src, int level) {

  if(0 == src){
   return num[src];
  }
  String des = "";
  int data = src % 10000;
  String sufix = unit2[level];
  String profix = "";
  int more = 0;
  boolean flag = false;
  int count = 0;
  for (; count <4; count++) {
   more = data % 10;
   if (more == 0) {
    if (flag &&  (int)(src / Math.pow(10, count+1)) >0) {
     des = num[more] + des;
     flag = false;
    }
   } else {
    flag = true;
    des = num[more] + unit1[count] + des;
   }
   data = data / 10;
  }
  if (src / 10000 == 0) {
   return des + sufix;
  } else {
   return numberToChineseCharactersPrefix(src / 10000, level + 1) + des + sufix;
  }
 }
 
 //只支持2位小数
 private static String numberToChineseCharactersSuffix(String tar) {
  int src = Integer.valueOf(tar);
 if(src ==0){
   return "元整";
  }
 
  String dest = "";
  String buff = tar;
  if(src >0){
   for(int i=0;i<buff.length();i++){
//    if(Integer.valueOf(buff.substring(i, i+1))>0){
     dest += num[Integer.valueOf(buff.substring(i, i+1))]+unit3[i];
//    }
   }
   dest ="元" +dest;
  }
 
  return dest;
 }
}

最近更新