Java将小写金额转换成大写详解编程语言

public class Test { 
 
	private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分"; 
	private static final String DIGIT = "零壹贰叁肆伍陆柒捌玖"; 
	private static final double MAX_VALUE = 9999999999999.99D; 
 
	public static void main(String[] args) { 
		System.out.println(change(0.01)); 
		System.out.println(change(5.36)); 
		System.out.println(change(100.00)); 
		System.out.println(change(8.80)); 
		System.out.println(change(1000000)); 
	} 
 
	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; 
	} 
 
} 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/14095.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论