java app顯示數字格式化以萬、億為單位轉換,如1.7萬
阿新 • • 發佈:2018-12-31
/** * <pre> * 數字格式化顯示 * 小於萬預設顯示 大於萬以1.7萬方式顯示最大是9999.9萬 * 大於億以1.1億方式顯示最大沒有限制都是億單位 * make by dongxh 2017年12月28日上午10:05:22 * </pre> * @param num * 格式化的數字 * @param kBool * 是否格式化千,為true,並且num大於999就顯示999+,小於等於999就正常顯示 * @return */ public static String formatNum(String num, Boolean kBool) { StringBuffer sb = new StringBuffer(); if (!StringUtils.isNumeric(num)) return "0"; if (kBool == null) kBool = false; BigDecimal b0 = new BigDecimal("1000"); BigDecimal b1 = new BigDecimal("10000"); BigDecimal b2 = new BigDecimal("100000000"); BigDecimal b3 = new BigDecimal(num); String formatNumStr = ""; String nuit = ""; // 以千為單位處理 if (kBool) { if (b3.compareTo(b0) == 0 || b3.compareTo(b0) == 1) { return "999+"; } return num; } // 以萬為單位處理 if (b3.compareTo(b1) == -1) { sb.append(b3.toString()); } else if ((b3.compareTo(b1) == 0 && b3.compareTo(b1) == 1) || b3.compareTo(b2) == -1) { formatNumStr = b3.divide(b1).toString(); nuit = "萬"; } else if (b3.compareTo(b2) == 0 || b3.compareTo(b2) == 1) { formatNumStr = b3.divide(b2).toString(); nuit = "億"; } if (!"".equals(formatNumStr)) { int i = formatNumStr.indexOf("."); if (i == -1) { sb.append(formatNumStr).append(nuit); } else { i = i + 1; String v = formatNumStr.substring(i, i + 1); if (!v.equals("0")) { sb.append(formatNumStr.substring(0, i + 1)).append(nuit); } else { sb.append(formatNumStr.substring(0, i - 1)).append(nuit); } } } if (sb.length() == 0) return "0"; return sb.toString(); }