1. 程式人生 > >java 小寫金額轉大寫金額

java 小寫金額轉大寫金額

 

public class XhgUtil {

 private static final String UNIT = "萬千佰拾億千佰拾萬千佰拾元角分";

 private static final String DIGIT = "零壹貳叄肆伍陸柒捌玖";

 private static final double MAX_VALUE = 9999999999999.99D;

 public static String change(double v) {
  if (v < 0 || v > MAX_VALUE)
   return "引數非法!";
  long l = Math.round(v * 100);
  if (l == 0)
   return "零元整";
  String strValue = l + "";
  // i用來控制數
  int i = 0;
  // j用來控制單位
  int j = UNIT.length() - strValue.length();
  String rs = "";
  boolean isZero = false;
  for (; i < strValue.length(); i++, j++) {
   char ch = strValue.charAt(i);

   if (ch == '0') {
    isZero = true;
    if (UNIT.charAt(j) == '億' || UNIT.charAt(j) == '萬' || UNIT.charAt(j) == '元') {
     rs = rs + UNIT.charAt(j);
     isZero = false;
    }
   } else {
    if (isZero) {
     rs = rs + "零";
     isZero = false;
    }
    rs = rs + DIGIT.charAt(ch - '0') + UNIT.charAt(j);
   }
  }

  if (!rs.endsWith("分")) {
   rs = rs + "整";
  }
  rs = rs.replaceAll("億萬", "億");
  return rs;
 }
 
 public static void main(String[] args){  
         System.out.println(change(Double.parseDouble("901010.20")));  
           
     }
}