java 格式化金额与数目字转换
java 格式化金额与数字转换
记录下一些常用的函数,以便下次使用
调用该方法
输出格式分:
将阿拉伯数字转换成对应的大写,不是很完善:
调用该方法
输出格式分:
记录下一些常用的函数,以便下次使用
/** * 格式化金额 * @param s * @param len * @return */ public static String formatMoney(String s, int len) { if (s == null || s.length() < 1) { return ""; } NumberFormat formater = null; double num = Double.parseDouble(s); if (len == 0) { formater = new DecimalFormat("###,###"); } else { StringBuffer buff = new StringBuffer(); buff.append("###,###."); for (int i = 0; i < len; i++) { buff.append("#"); } formater = new DecimalFormat(buff.toString()); } String result = formater.format(num); if(result.indexOf(".") == -1) { result = "¥" + result + ".00"; } else { result = "¥" + result; } return result; }
调用该方法
formatMoney("-87094753316.74", 2)
输出格式分:
¥-87,094,753,316.74
将阿拉伯数字转换成对应的大写,不是很完善:
public static String getUpperChineseMoney(String amount) { if (null==amount||"".equals(amount)||amount.indexOf("-")!=-1) return ""; if (amount == null||Double.parseDouble(amount)==0) { return "零元整"; } boolean islt0 = false; if(Double.parseDouble(amount) < 0.001){ islt0=true; amount = (-Double.parseDouble(amount))+""; } final String[] upperUnit = { "万", "仟", "佰", "拾", "亿", "仟", "佰", "拾", "万", "仟", "佰", "拾", "元"}; final String[] upperNumber = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; final String[] upperDec = { "角", "分"}; StringBuffer convertedMoney = new StringBuffer(""); String returnString = ""; try { System.out.println(amount+"----------------------"); DecimalFormat dcf = new DecimalFormat("###########0.00"); String numString = dcf.format(Double.parseDouble(amount)); System.out.println(numString+"----------------------"); numString=numString.replaceAll(",","."); System.out.println(numString+"----------------------"); int dotPos = numString.indexOf("."); String integerStr = numString.substring(0, dotPos); String decStr = numString.substring(dotPos + 1); int lenInt = integerStr.length(); int lenDec = 0; if ("00".equalsIgnoreCase(decStr)) { lenDec = 0; } else { lenDec = 2; } if (lenInt > 13) { return "数字太大"; } boolean zeroFlg = false; int lenEmpty = 13 - lenInt; for (int i = 0; i < lenInt; i++) { String number = integerStr.substring(i, i + 1); String unit = upperUnit[lenEmpty + i]; String upNum = upperNumber[Integer.parseInt(number)]; if ("0".equalsIgnoreCase(number)) { if (!zeroFlg) { zeroFlg = true; } if ("亿".equals(unit) || "万".equals(unit) || "元".equals(unit)) { convertedMoney.append(unit); } } else { if (zeroFlg) { convertedMoney.append("零").append(upNum).append(unit); zeroFlg = false; } else { convertedMoney.append(upNum).append(unit); } } } if (lenDec == 0) { convertedMoney.append("整"); } else { String jiao = upperNumber[Integer.parseInt(decStr.substring(0, 1))]; if (!"0".equals(decStr.substring(0, 1))) { convertedMoney.append(jiao).append(upperDec[0]); } else { convertedMoney.append(jiao); } String fen = upperNumber[Integer.parseInt(decStr.substring(1, 2))]; if (!"0".equals(decStr.substring(1, 2))) { convertedMoney.append(fen).append(upperDec[1]); } else { convertedMoney.append("整"); } } returnString = convertedMoney.toString(); if (judgeUnit(returnString)) { returnString = returnString.replaceFirst("亿万", "亿"); } } catch (Exception ex) { ex.printStackTrace(); return "输入格式不正确!"; } if(islt0){ returnString="负"+returnString; } return returnString; }
调用该方法
getUpperChineseMoney("54545454");
输出格式分:
伍仟肆佰伍拾肆万伍仟肆佰伍拾肆元整