/**
* 把数字转换成中文大写金额,分以下小数截位
* @param dblMoney double:数字
* @param blnFull boolean:
* =False,2001.30->贰仟零壹元叁角整
* =True,2001.30->贰仟零佰零拾壹元叁角零分
* @param bZheng boolean:是否强制末尾加整字(如果不是到分,那么一定有整)
* @return String
*/
public static final String chineseAmount(double dblMoney, boolean blnFull, boolean bZheng) {
String conChineseNum = "零壹贰叁肆伍陆柒捌玖";
String conChineseMUnit = "分角元拾佰仟万拾佰仟亿";
String strMoney=null;
String T1="";
char T2,t0=' ';
int ii,jj,kk;
boolean noZero = false;
strMoney = new DecimalFormat("0.00").format(YssD.round(dblMoney,2,true));//去掉前导0
kk = 0;
if (blnFull) {
for (ii = strMoney.length() - 1; ii >= 0; ii--) {
T2 = strMoney.charAt(ii);
if(T2>='0' && T2<='9'){
T1 = String.valueOf(conChineseNum.charAt(T2 - '0')) +
String.valueOf(conChineseMUnit.charAt(kk++)) + T1;
if (kk > 10) kk -= 8;
}
}
}
else {
for (ii = strMoney.length() - 1; ii >= 0; ii--) {
T2 = strMoney.charAt(ii);
if (T2 == '0' && !noZero) {
if (kk == 2 || kk == 6)
T1 = String.valueOf(conChineseMUnit.charAt(kk)) + T1;
else if (kk == 10)
T1 = String.valueOf(conChineseMUnit.charAt(kk)) +
(T1.charAt(0) == '万' ? T1.substring(1) : T1);
if (++kk > 10) kk -= 8;
}
else if (T2 == '.' && !noZero) {
}else{
noZero = true;
if (T2 >= '0' && T2 <= '9') {
if (T2 == '0') {
if (T2 != t0) {
t0 = T2;
jj = T2 - '0';
if (kk == 2 || kk == 6 || kk == 10)
T1 = String.valueOf(conChineseMUnit.charAt(kk)) + T1;
else
T1 = String.valueOf(conChineseNum.charAt(jj)) + T1;
}
else {
if (kk == 2 || kk == 6)
T1 = String.valueOf(conChineseMUnit.charAt(kk)) + T1;
else if (kk == 10)
T1 = String.valueOf(conChineseMUnit.charAt(kk)) +
(T1.charAt(0) == '万' ? T1.substring(1) : T1);
}
}else{
t0 = T2;
jj = T2 - '0';
if (kk == 10 && T1.charAt(0) == '万') T1 = T1.substring(1);
T1 = String.valueOf(conChineseNum.charAt(jj)) +
String.valueOf(conChineseMUnit.charAt(kk)) + T1;
}
if (++kk > 10) kk -= 8;
}
}
}
T2 = T1.charAt(0);
while (conChineseMUnit.indexOf(T2)>=0 || T2=='零') {
T1 = T1.substring(1);
if (T1.length() > 1)
T2 = T1.charAt(0);
else
break;
}
if (T1.length() == 0) T1 = "零元";
}
return T1.concat(bZheng || T1.charAt(T1.length()-1) != '分' ? "整": "");
}
public String concat(String str) {
int otherLen = str.length();
if (otherLen == 0) {
return this;
}
char buf[] = new char[count + otherLen];
getChars(0, count, buf, 0);
str.getChars(0, otherLen, buf, count);
return new String(0, count + otherLen, buf);
}