Java将小写金额转换成大写

来源:互联网 发布:最后一炮优化很烂 编辑:程序博客网 时间:2024/05/17 02:07


工作中遇到金额小写转大写的需求。由于现成的工具包没有找到此功能。最后搜到:

http://blog.csdn.net/leeyefang/article/details/53098737

代码如下:

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;}}



原创粉丝点击