欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

小写金额转变成大写金额(做报表显示金额有关问题)

更新时间: 2014-01-05 03:07:28 责任编辑: Author_N1

 

小写金额转变成大写金额(做报表显示金额问题)
(1).
public class XhgUtil{

	private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分";
	
	private static final String DIGIT = "零壹贰叁肆伍陆柒捌玖";
	
	private static final double MAX_VALUE = 9999999999999.99D;
	
	public static String change(double v){
		if(v < 0 || v > MAX_VALUE)
			return "参数非法!";
		long l = Math.round(v * 100);
		if(l == 0)
			return "零元整";
		String strValue = l + "";
		//i用来控制数
		int i = 0;
		//j用来控制单位
		int j = UNIT.length() - strValue.length();
		String rs = "";
		boolean isZero = false;
		for(;i < strValue.length(); i++,j++){
			char ch = strValue.charAt(i);
			
			if(ch == '0'){
				isZero = true;
				if(UNIT.charAt(j) == '亿' || UNIT.charAt(j) == '万' || UNIT.charAt(j) == '元'){
					rs = rs + UNIT.charAt(j);
					isZero = false;
				}
			}else{
				if(isZero){
				  rs = rs + "零";
				  isZero = false;
				}
				rs = rs + DIGIT.charAt(ch - '0') + UNIT.charAt(j);
			}		
		}
		
		if(!rs.endsWith("分")){		
			rs = rs + "整";			
		}	
		rs = rs.replaceAll("亿万","亿");
		return rs;
	}
	
	public static void main(String[] args){
		double val = Double.valueOf(12345.01);
		System.out.println(change(val));
		
	}
}


(2).
public class Test {

	private String getUnits(int i) {
		String s = "";
		switch (i) {
		case 2:
			s = "拾";
			break;
		case 3:
			s = "佰";
			break;
		case 4:
			s = "仟";
			break;
		case 5:
			s = "万";
			break;
		}
		return s;
	}

	private String getNum(int i) {
		String s = "零";
		switch (i) {
		case 1:
			s = "壹";
			break;
		case 2:
			s = "贰";
			break;
		case 3:
			s = "弎";
			break;
		case 4:
			s = "贰";
			break;
		case 5:
			s = "伍";
			break;
		case 6:
			s = "陆";
			break;
		case 7:
			s = "柒";
			break;
		case 8:
			s = "捌";
			break;
		case 9:
			s = "玖";
			break;
		}
		return s;
	}

	private String getPoint(int i) {
		String s = "";
		switch (i) {
		case 1:
			s = "分";
			break;
		case 2:
			s = "角";
			break;
		}
		return s;
	}

	private String compute(String args, String type) {
		String s = "";
		// 计算小数点前的数
		int length = args.length();
		for (int i = 0; i < args.length(); i++) {
			String unit = null;
			if (type.equals("Point")) {
				unit = getPoint(length);
			} else {
				unit = getUnits(length);
			}

			String sa0 = args.substring(i, i + 1);
			if (Integer.valueOf(sa0).intValue() != 0) {
				s += getNum(Integer.valueOf(sa0));
				s += unit;
			} else {
				if ((i + 1) != args.length()) {
					String next = args.substring(i + 1, i + 2);
					if (Integer.valueOf(next).intValue() != 0) {
						s += getNum(Integer.valueOf(sa0));
					}
				}
			}
			length--;
		}
		return s;
	}

	public String changeNumToUp(String amt) {
		String[] amts = amt.split("\\.");
		// 计算小数点前 数
		String s = "";
		String intPart = amts[0];
		if (intPart.length() <= 4) {
			s = compute(intPart, "INT");
		} else if (intPart.length() <= 8) {
			String preInt = intPart.substring(0, intPart.length() - 4);
			s = compute(preInt, "INT");
			String lastInt = intPart.substring(intPart.length() - 4);
			s += "万" + compute(lastInt, "INT");
		} else if (intPart.length() <= 12) {
			String prepInt = intPart.substring(0, intPart.length() - 8);
			s = compute(prepInt, "INT");
			String preInt = intPart.substring(intPart.length() - 8, intPart
					.length() - 4);
			s += "亿" + compute(preInt, "INT");
			String lastInt = intPart.substring(intPart.length() - 4);
			s += "万" + compute(lastInt, "INT");
		}
		if (amts.length == 1) {
			s += "元整";
		}
		// 计算小数点后的数
		if (amts.length == 1) {
			s += "元整";
		}
		// 计算小数点后的数
		if (amts.length > 1) {
			int pre = Integer.valueOf(amts[1]);
			if ((amts[1].length() == 1 || (amts[1].length() != 1) && pre == 0)) {
				s += "元整";
			} else {
				s += "元零";
			}
			s += compute(amts[1], "Point");
			s = s.replace("零零", "零");
		}

		return s;
	}

	public static void main(String[] args) {
		
		Test test = new Test();
		String amt = "12345.67";
		System.out.println(test.changeNumToUp(amt));
	}
}


顯示: 壹万贰仟弎佰贰拾伍元零陆角柒分
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:07:28
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/18613/
本文WWW.DOC100.NET DOC100.NET版权所有。