import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; public final class AmountUtil { private static DecimalFormat LIMIT_AMOUNT_FORMAT = new DecimalFormat("#.00"); static { LIMIT_AMOUNT_FORMAT.setRoundingMode(RoundingMode.FLOOR); } /** * 1亿 */ private static final int HUNDRED_MILLION = 100000000; /** * 1万 */ private static final int TEN_THOUSAND = 10000; /** * 金额转换为自定义字符串(保留两位小数) */ public static String CustomFormatWith2Digits(int amount) { if (0 < amount && amount < TEN_THOUSAND) { return String.format("%d元", amount); } else if (TEN_THOUSAND <= amount && amount < HUNDRED_MILLION) { if (amount % TEN_THOUSAND == 0) { return String.format("%d万元", amount / TEN_THOUSAND); } else { BigDecimal tmpAmount = BigDecimal.valueOf(amount * 1.0 / TEN_THOUSAND); return String.format("%s万元", LIMIT_AMOUNT_FORMAT.format(tmpAmount)); } } else if (HUNDRED_MILLION <= amount) { if (amount % HUNDRED_MILLION == 0) { return String.format("%d亿元", amount / HUNDRED_MILLION); } else { BigDecimal tmpAmount = BigDecimal.valueOf(amount * 1.0 / HUNDRED_MILLION); return String.format("%s亿元", LIMIT_AMOUNT_FORMAT.format(tmpAmount)); } } return ""; } /** * 金额字符串(可能带千分位)转换为自定义字符串(保留两位小数) */ public static String CustomFormatWith2Digits(String amountStr) { int amount = 0; try { if (amountStr.contains(",")) { amountStr = amountStr.replace(",", ""); } amount = Integer.parseInt(amountStr); } catch (NumberFormatException e) { return ""; } return CustomFormatWith2Digits(amount); } }
时间: 2024-10-14 06:22:01