素材网 素材网

java实现人民币数字转换中文大写

xw素材网
0

java实现人民币数字转换成中文大写价格

支持小数点转换,抽时间整理这样一个方法,大家可以参考和学习一下。

package xwcms.net.service;
import java.util.HashMap;
/**
 * 数字金额转换成中文大写金额
 * @author ftpeng
 *
 */
public class test {
	/**
	 * 人民币大写单位制
	 */
	private static HashMap<Integer, String> dws;
	/**
	 * 数字对应的中文
	 */
	private static String[] jes;
	// 初始化执行
	static{
		dws = new HashMap<Integer, String>();
		dws.put(-2, "分");
		dws.put(-1, "角");
		dws.put(0, "元");
		dws.put(1, "拾");
		dws.put(2, "佰");
		dws.put(3, "仟");
		dws.put(4, "万");//
		dws.put(5, "拾");
		dws.put(6, "佰");
		dws.put(7, "仟");
		dws.put(8, "亿");//
		dws.put(9, "拾");
		dws.put(10, "佰");
		dws.put(11, "仟");
		dws.put(12, "万");
		jes = new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
	}
	/**
	 * 数字转换人民币大写
	 * @param number 数字 不支持科学数字
	 * @return
	 */
	public static String chinese(String number){
		StringBuffer su = new StringBuffer();
		// 整数部分
		number = delInvalidZero(number);
		String str = null;
		// 小数部分
		String decimal = null;
		if(number.contains(".")){
			// 截取整数位
			str = number.split("\\.")[0];
			decimal = number.split("\\.")[1];
		}else{
			str = number;
		}
		// 判断是否存在整数位
		if(str.length()>0){
			for (int i = 0; i < str.length() ; i++) {
				String context = str.substring(i, i+1);
				int pow = str.length()-i-1;
				Integer val = Integer.parseInt(context.toString());
				// 获取中文单位
				String sign = dws.get(pow);
				// 获取中文数字
				String name = jes[Integer.parseInt(context)];
				if(val==0){
					if(pow%4!=0){// 删除单位
						sign = "";
					}
					if(i < str.length()-1){
						Integer val1 = Integer.parseInt(str.substring(i+1, i+2));
						if(val==0&&val==val1){
							name = "";
						}
					}else if(i == str.length()-1){
						name = "";
					}
				}
				su.append(name+sign);
			}
		}
		// 判断是否存在小数位
		if(decimal!=null){
			str = decimal.substring(0,1);
			if(!"0".equals(str)){
				su.append(jes[Integer.parseInt(str)]+dws.get(-1));
			}
			if(decimal.length()==2){
				str = decimal.substring(1,2);
				if(!"0".equals(str)){
					su.append(jes[Integer.parseInt(str)]+dws.get(-2));
				}
			}
		}else{
			su.append("整");
		}
		return su.toString();
	}
	/**
	 * 清理数字特殊字符
	 * @param str
	 * @return
	 */
	private static String delInvalidZero(String str){
		if("0".equals(str.substring(0, 1))){
			return delInvalidZero(str.substring(1, str.length()));
		}else if(str.contains(",")){
			return delInvalidZero(str.replaceAll(",", ""));
		}else{
			return str;
		}
	}
	public static void main(String[] args) {
		System.out.println(test.chinese("12.5"));
	}
}


@ 2013 xwcms.net . All Rights Reserved. xw素材网 | 备案号:晋ICP备13005902号 联系管理员
×

邮箱订阅

什么是邮箱订阅?

邮箱订阅是xw素材网为jquery爱好者与web程序员提供一项以邮箱的方式发送最新jquery资源与素材资源的模式,用户只需在左侧填写正确的邮箱用户名与邮箱地址我们将每天推荐最新优质资源到用户邮箱。当然每份邮箱都会有一个取消订阅按钮,当用户点击取消按钮时我们将会停止对用户发送邮箱资源推送。再次感谢大家对xw素材网的支持与关注。