public static String getChineseCurrencyString(String number) {
  try {
   new Double(number);
  } catch (java.lang.NumberFormatException e) {
   return "Not a Formatted Float";
  }
  try {
   String result = "";
   String value = number;
   boolean bHasDot = false;
   int dotIndex = value.indexOf('.');
   if (dotIndex == -1)
    dotIndex = value.length();
   else
    bHasDot = true;
   String beforeDot = value.substring(0, dotIndex).trim();
   String afterDot = value.substring(dotIndex);
   int len = 0;
   // before dot
   len = beforeDot.length();
   char unit[] = { '元', '万', '亿', '万' };
   char subunit[] = { '拾', '佰', '仟' };
   int i = 0, j = 0, k = 0; // j is use to subunit,k is use to unit
   char oldC = '3';
   char zero = '零';
   char cc = '0';
   result = unit[0] + result;
   boolean oldHasN = false;
   boolean hasN = false;
   boolean allZero = true;
   for (i = 0; i < len; i++) {
    if (j == 0 && i != 0) {
     if (!hasN) {
      if ((k % 2) == 0) {
       result = result.substring(1);
      }
     } else {
      if (oldC == '0')
       result = zero + result;
     }
     result = unit[k] + result;
     // oldC = '3';
     oldHasN = hasN;
     hasN = false;
    }
    cc = beforeDot.charAt(len - i - 1);
    if (oldC == '0' && cc != oldC) {
     if (hasN)
      result = zero + result;
    }
    if (cc != '0') {
     if (j != 0)
      result = subunit[j - 1] + result;
     char dig = '0';
     switch (cc) {
     case '1':
      dig = '壹';
      break;
     case '2':
      dig = '贰';
      break;
     case '3':
      dig = '叁';
      break;
     case '4':
      dig = '肆';
      break;
     case '5':
      dig = '伍';
      break;
     case '6':
      dig = '陆';
      break;
     case '7':
      dig = '柒';
      break;
     case '8':
      dig = '捌';
      break;
     case '9':
      dig = '玖';
      break;
     }
     if (dig == '0')
      return "err";
     hasN = true;
     allZero = false;
     result = dig + result;
    }
    oldC = cc;
    j++;
    if (j == 4) {
     k++;
     j = 0;
    }
   }
   if (allZero) {
    result = "零元";
   } else {
    int bb = 0;
    if (!hasN) {
     bb++;
     if (!oldHasN) {
      bb++;
     }
    }
    if (bb != 0)
     result = result.substring(bb);
    if (result.charAt(0) == '零')
     result = result.substring(1);
   }
   // after dot
   if (bHasDot) {
    afterDot = afterDot.substring(1).trim();
    len = afterDot.length();
    char[] corn;
    corn = new char[2];
    char cornunit[] = { '角', '分' };
    //int n = 0; // j is use to subunit,k is use to unit
    char dig = '0';
    corn[0] = afterDot.charAt(0);
    if (len > 1)
     corn[1] = afterDot.charAt(1);
    else
     corn[1] = '0';
    if ((corn[0] == '0') && (corn[1] == '0'))
     return result += '整';
    else {
     if (allZero)
      result = "";
    }
    for (i = 0; i < 2; i++) {
     char curchar;
     curchar = corn[i];
     switch (curchar) {
     case '1':
      dig = '壹';
      break;
     case '2':
      dig = '贰';
      break;
     case '3':
      dig = '叁';
      break;
     case '4':
      dig = '肆';
      break;
     case '5':
      dig = '伍';
      break;
     case '6':
      dig = '陆';
      break;
     case '7':
      dig = '柒';
      break;
     case '8':
      dig = '捌';
      break;
     case '9':
      dig = '玖';
      break;
     case '0':
      dig = zero;
      break;
     }
     if (dig == '0')
      return "err";
     result += dig;
     if (i == 0) {
      if (curchar != '0')
       result += cornunit[0];
      else if (allZero)
       result = "";
     }
     if (i == 1)
      result += cornunit[1];
    }
   } else {
    result += "整";
   }
   return result;
  } catch (Exception e) {
   return "err input";
  }
 }