All Downloads are FREE. Search and download functionalities are using the official Maven repository.

club.zhcs.utils.FinanceUtils Maven / Gradle / Ivy

package club.zhcs.utils;

import java.util.HashMap;
import java.util.Map;

/**
 * 财务数字转换
 * 
 * @author Kerbores
* * create at 2014年11月7日 下午9:56:04 */ public class FinanceUtils { private FinanceUtils() { } public static void m0(String sb, int type, StringBuilder sbf) { int len = sb.length(); int b = 0; type++; if (len >= 4) { b = len - 4; sbf.insert(0, m1(sb.substring(b), type)); m0(sb.substring(0, b), type, sbf); } else if (len > 0) { sbf.insert(0, m1(sb, type)); } if ('零' == sbf.charAt(0)) {sbf.deleteCharAt(0);} } public static StringBuilder m1(String sb, int type) { StringBuilder sbf = new StringBuilder(sb); switch (type) { case 1: sbf.append("圆"); break; case 2: sbf.append("万"); break; case 3: sbf.append("亿"); break; default: break; } // 开始赋值 return m10(sbf); } private static StringBuilder m10(StringBuilder sbf) { int b = 0; char t = 0; for (int i = sbf.length() - 2; i >= 0; i--) { t = sbf.charAt(i); sbf.setCharAt(i, map.get(t)); if (i != 0) {sbf.insert(i, mode[b]);} b++; } m11(sbf); if (sbf.length() == 1 && '圆' != sbf.charAt(0)) { sbf.setLength(0); } return sbf; } private static void m11(StringBuilder sbf) { char t; for (int i = 0; i < sbf.length(); i++) { t = sbf.charAt(i); if (t == '零') { t = sbf.charAt(i + 1); if ('圆' != t && '万' != t && '亿' != t) {sbf.deleteCharAt(i + 1);} else {sbf.deleteCharAt(i);} if (i != 0 && sbf.charAt(i - 1) == '零') { sbf.deleteCharAt(i - 1); i--; } } } } public static StringBuilder m2(String de) { if (de.length() > 2) {de = de.substring(0, 2);} de = de.replaceFirst("00", ""); StringBuilder sb = new StringBuilder(de); if (sb.length() > 0) { if (sb.charAt(sb.length() - 1) == '0') {sb.deleteCharAt(sb.length() - 1);} sb.setCharAt(0, map.get(sb.charAt(0))); switch (sb.length()) { case 1: sb.append("角"); break; case 2: sb.setCharAt(1, map.get(sb.charAt(1))); if (sb.charAt(0) != '零') {sb.insert(1, '角');} sb.append("分"); break; default: break; } } return sb; } /** * 将字符串表示的金额转换成大写金额 * * @param in 输入金额 字符串形式 如 12345.67 * @return 大写金额 如 壹佰贰拾叁万肆仟伍佰陆拾陆圆贰角贰分 整 */ public static String toChar(String in) { StringBuilder sbf = new StringBuilder(); String[] sp = in.split("\\."); if (sp.length == 2) { m0(sp[0], 0, sbf); sbf.append(m2(sp[1])); } else { m0(in, 0, sbf); } sbf.append(" 整"); return sbf.toString(); } // 缓存所有数字的 private static Map map = new HashMap<>(10); static { map.put('1', '壹'); map.put('2', '贰'); map.put('3', '叁'); map.put('4', '肆'); map.put('5', '伍'); map.put('6', '陆'); map.put('7', '柒'); map.put('8', '捌'); map.put('9', '玖'); map.put('0', '零'); } static char[] mode = new char[] { '拾', '佰', '仟' }; }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy