您的位置:首页 > 其它

数字转换为汉语中人民币的大写

2015-12-30 10:54 501 查看
Java中吧数字转换为人民币大写格式,网上有很多方法,现在这是跟据被人的方法改编的,更容易理解一些

package com.lm.util;

public class Test {
/**
* 汉语中数字大写
*/
private static final String[] CN_UPPER_NUMBER = { "零", "壹", "贰", "叁", "肆",
"伍", "陆", "柒", "捌", "玖" };
/**
* 汉语中货币单位大写,这样的设计类似于占位符
*/
private static final String[] CN_UPPER_MONETRAY_UNIT = { "分", "角", "元",
"拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾",
"佰", "仟" };
/**
* 特殊字符:整
*/
private static final String CN_FULL = "整";
/**
* 把输入的金额转换为汉语中人民币的大写
*
* @param numberOfMoney
*            输入的金额
* @return 对应的汉语大写
*/
public static String number2CNMontrayUnit(String str) {
String headInteger = null;//整数部分
String endDecimal = null;//小数部分
if(str.contains(".")){
headInteger = str.substring(0, str.indexOf("."));
endDecimal = str.substring(str.indexOf(".") + 1);
}else{
headInteger = str;
}
long headIntegerValue = (long) (Double.parseDouble(headInteger.trim()));
int numUnit = 0;
boolean getZero = false;//判断是否为零
String prefix = ""; // 整数部分转化的结果
String suffix = ""; // 小数部分转化的结果
// 处理小数点后面的数
if (null == endDecimal || endDecimal.equals("00") ) {
suffix = CN_FULL;
} else {
//角位是零的
if(endDecimal.charAt(0) == '0'){
suffix =  CN_UPPER_NUMBER[endDecimal.charAt(1) - '0'] + CN_UPPER_MONETRAY_UNIT[0] + suffix ;
}else if(endDecimal.charAt(1) == '0'){
suffix = suffix + CN_UPPER_NUMBER[endDecimal.charAt(0) - '0'] + CN_UPPER_MONETRAY_UNIT[1];
}else{
suffix = CN_UPPER_NUMBER[endDecimal.charAt(1) - '0'] + CN_UPPER_MONETRAY_UNIT[1]
+  CN_UPPER_NUMBER[endDecimal.charAt(0) - '0'] + CN_UPPER_MONETRAY_UNIT[0];
}
}
//循环处理整数部分
for (int i = 0; i < headInteger.length(); i++) {
numUnit = (int) (headIntegerValue % (10));
if(numUnit > 0){
prefix = CN_UPPER_NUMBER[numUnit] + CN_UPPER_MONETRAY_UNIT[i+2] + prefix ;
getZero = false;
}else{
if (!(getZero)) {
prefix =   CN_UPPER_MONETRAY_UNIT[i+2] + CN_UPPER_NUMBER[0] + prefix;
}
getZero = true;
}
headIntegerValue = headIntegerValue/10;//每次循环去掉最后一位
}
return prefix + suffix;
}
public static void main(String[] args) {
//		String str = "100091654658.99";
String str = "10";
System.out.println(str);
String number2cnMontrayUnit = Test.number2CNMontrayUnit(str);
System.out.println(number2cnMontrayUnit);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: