package
com.test;
/** */ /**
* All Rights Reserved@2006-2007
* Author: HallyWang
* Date: 2007-3-16
* Time: 16:40:42
* Modifier:HallyWang
* Modify Date&Time: 2007-3-16 16:40:42
*/
public class conNumToUpperCN ... {
public conNumToUpperCN() ...{
}
public static String convertToUpperCN(String number) ...{
String resultString = "整";
try ...{
String[] unit = ...{"分", "角", "元", "拾", "佰", "扦", "万", "拾", "佰", "扦", "亿", "拾", "佰", "扦", "万"};//单位
String[] numberCN = ...{"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; //0-9中文对应
int point = number.indexOf(".");
if (point == -1) ...{ //没有小数部分
String numStr = number;
int len = numStr.length();
if (len > 13) ...{
return "请输入10万亿以下数字";
}
for (int i = 0; i < len; i++) ...{
int j = Integer.parseInt(numStr.substring(len - 1 - i, len - i)); //得到每一位数 (个位--〉最高位)
resultString = numberCN[j] + unit[2 + i] + resultString; //从数组从取出其中文对应大写,以及单位
numStr = numStr.substring(0, len - 1 - i);
}
} else ...{ //有小数部分
String numStr = number.substring(0, point);
String last = number.substring(point + 1);
int len = numStr.length();
if (len > 13) ...{
return "请输入10万亿以下数字";
}
int lenlast = last.length();
//使小数点后面只精确到角分
if (lenlast > 2) ...{
lenlast = 2;
last = last.substring(0, 2);
}
if (lenlast < 2) ...{
lenlast = 2;
last = last + "0";
}
//得到角分
for (int k = 0; k < lenlast; k++) ...{
int p = Integer.parseInt(last.substring(lenlast - 1 - k, lenlast - k));
resultString = numberCN[p] + unit[k] + resultString;
last = last.substring(0, lenlast - 1 - k);
}
//得到整数
for (int i = 0; i < len; i++) ...{
int j = Integer.parseInt(numStr.substring(len - 1 - i, len - i));
resultString = numberCN[j] + unit[(2 + i)] + resultString;
numStr = numStr.substring(0, len - 1 - i);
}
}
} catch (Exception e) ...{
e.printStackTrace();
}
resultString = resultString.replaceAll("零扦", "零");
resultString = resultString.replaceAll("零佰", "零");
resultString = resultString.replaceAll("零拾", "零");
resultString = resultString.replaceAll("零万", "零");
while (resultString.indexOf("零零") > 0) ...{
resultString = resultString.replaceAll("零零", "零");
}
resultString = resultString.replaceAll("零亿", "亿");
//防止类似零扦、零百等的出现
return resultString;
}
}
/** */ /**
* All Rights Reserved@2006-2007
* Author: HallyWang
* Date: 2007-3-16
* Time: 16:40:42
* Modifier:HallyWang
* Modify Date&Time: 2007-3-16 16:40:42
*/
public class conNumToUpperCN ... {
public conNumToUpperCN() ...{
}
public static String convertToUpperCN(String number) ...{
String resultString = "整";
try ...{
String[] unit = ...{"分", "角", "元", "拾", "佰", "扦", "万", "拾", "佰", "扦", "亿", "拾", "佰", "扦", "万"};//单位
String[] numberCN = ...{"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; //0-9中文对应
int point = number.indexOf(".");
if (point == -1) ...{ //没有小数部分
String numStr = number;
int len = numStr.length();
if (len > 13) ...{
return "请输入10万亿以下数字";
}
for (int i = 0; i < len; i++) ...{
int j = Integer.parseInt(numStr.substring(len - 1 - i, len - i)); //得到每一位数 (个位--〉最高位)
resultString = numberCN[j] + unit[2 + i] + resultString; //从数组从取出其中文对应大写,以及单位
numStr = numStr.substring(0, len - 1 - i);
}
} else ...{ //有小数部分
String numStr = number.substring(0, point);
String last = number.substring(point + 1);
int len = numStr.length();
if (len > 13) ...{
return "请输入10万亿以下数字";
}
int lenlast = last.length();
//使小数点后面只精确到角分
if (lenlast > 2) ...{
lenlast = 2;
last = last.substring(0, 2);
}
if (lenlast < 2) ...{
lenlast = 2;
last = last + "0";
}
//得到角分
for (int k = 0; k < lenlast; k++) ...{
int p = Integer.parseInt(last.substring(lenlast - 1 - k, lenlast - k));
resultString = numberCN[p] + unit[k] + resultString;
last = last.substring(0, lenlast - 1 - k);
}
//得到整数
for (int i = 0; i < len; i++) ...{
int j = Integer.parseInt(numStr.substring(len - 1 - i, len - i));
resultString = numberCN[j] + unit[(2 + i)] + resultString;
numStr = numStr.substring(0, len - 1 - i);
}
}
} catch (Exception e) ...{
e.printStackTrace();
}
resultString = resultString.replaceAll("零扦", "零");
resultString = resultString.replaceAll("零佰", "零");
resultString = resultString.replaceAll("零拾", "零");
resultString = resultString.replaceAll("零万", "零");
while (resultString.indexOf("零零") > 0) ...{
resultString = resultString.replaceAll("零零", "零");
}
resultString = resultString.replaceAll("零亿", "亿");
//防止类似零扦、零百等的出现
return resultString;
}
}