package com.chen.test;
public class TestChinese {
public static void main(String[] args) {
System.out.println(daxie_bf(2111112.91));
//输出结果-->贰佰壹拾壹万壹仟壹佰壹拾贰元玖角壹分
}
public static String daxie_bf(double amount){
boolean negative = false;
if (amount < 0.0D){
negative = true;
amount *= -1D;
}
long temp = Math.round(amount * 100D);
int numFen = (int)(temp % 10L);
temp /= 10L;
int numJiao = (int)(temp % 10L);
temp /= 10L;
int parts[] = new int[20];
int numParts = 0;
for (int i = 0; temp != 0L; i++){
int part = (int)(temp % 10000L);
parts[i] = part;
numParts++;
temp /= 10000L;
}
boolean beforeWanIsZero = true;
String chineseStr = "";
for (int i = 0; i < numParts; i++){
String partChinese = partTranslate(parts[i]);
if (i % 2 == 0)
if ("".equals(partChinese))
beforeWanIsZero = true;
else
beforeWanIsZero = false;
if (i != 0)
if (i % 2 == 0)
chineseStr = (new StringBuilder("亿")).append(
chineseStr).toString();
else
if ("".equals(partChinese) && !beforeWanIsZero){
chineseStr = (new StringBuilder("零")).append(
chineseStr).toString();
} else{
if (parts[i - 1] < 1000 && parts[i - 1] > 0)
chineseStr = (new StringBuilder("零")).append(
chineseStr).toString();
chineseStr = (new StringBuilder("万")).append(
chineseStr).toString();
}
chineseStr = (new StringBuilder(
String.valueOf(partChinese))).append(
chineseStr).toString();
}
if ("".equals(chineseStr))
chineseStr = chineseDigits[0];
else
if (negative)
chineseStr = (new StringBuilder("负")).append(
chineseStr).toString();
chineseStr = (new StringBuilder(
String.valueOf(chineseStr))).append("元").toString();
if (numFen == 0 && numJiao == 0)
chineseStr = (new StringBuilder(
String.valueOf(chineseStr))).append("整").toString();
else
if (numFen == 0)
chineseStr = (new StringBuilder(
String.valueOf(chineseStr))).append(
chineseDigits[numJiao]).append("角").toString();
else
if (numJiao == 0)
chineseStr = (new StringBuilder(
String.valueOf(chineseStr))).append("零").append(
chineseDigits[numFen]).append("分").toString();
else
chineseStr = (new StringBuilder(
String.valueOf(chineseStr))).append(
chineseDigits[numJiao]).append("角").append(
chineseDigits[numFen]).append("分").toString();
return chineseStr;
}
public static String chineseDigits[] = {
"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"
};
private static String partTranslate(int amountPart){
if (amountPart < 0 || amountPart > 0x5f5e100)
throw new IllegalArgumentException(
"参数必须是大于等于 0,小于 100000000 的整数!");
String units[] = {
"", "拾", "佰", "仟"
};
int temp = amountPart;
String amountStr = (new Integer(amountPart)).toString();
int amountStrLength = amountStr.length();
boolean lastIsZero = true;
String chineseStr = "";
for (int i = 0; i < amountStrLength; i++){
if (temp == 0)
break;
int digit = temp % 10;
if (digit == 0){
if (!lastIsZero)
chineseStr = (new StringBuilder("零")
).append(chineseStr).toString();
lastIsZero = true;
} else{
chineseStr = (new StringBuilder(
String.valueOf(chineseDigits[digit]))
).append(units[i]).append(chineseStr).toString();
lastIsZero = false;
}
temp /= 10;
}
return chineseStr;
}
}