public final class MoneyUtils { /** * 金额0.00。 */ public static final BigDecimal ZERO = BigDecimal.valueOf(0.00); /** * 金额100.00。 */ public static final BigDecimal HUNDRED = new BigDecimal(100.00); private MoneyUtils() { super(); } /** * 四舍五入保留1位小数(四舍六入五成双)。 * * @param amount 金额。 * @return 四舍五入保留1位小数后金额。 */ public static BigDecimal decimal1ByUp(BigDecimal amount) { return amount.setScale(1, BigDecimal.ROUND_HALF_EVEN); } /** * 四舍五入保留2位小数(四舍六入五成双)。 * * @param amount 金额。 * @return 四舍五入保留2位小数后金额。 */ public static BigDecimal decimal2ByUp(BigDecimal amount) { return amount.setScale(2, BigDecimal.ROUND_HALF_EVEN); } /** * 四舍五入保留4位小数(四舍六入五成双)。 * * @param amount 金额。 * @return 四舍五入保留4位小数后金额。 */ public static BigDecimal decimal4ByUp(BigDecimal amount) { return amount.setScale(4, BigDecimal.ROUND_HALF_EVEN); } /** * 除法,四舍五入保留2位小数。 * * @param divideAmount 金额。 * @param dividedAmount 被除的金额。 * @return 四舍五入保留2位小数后金额。 */ public static BigDecimal divide2ByUp(BigDecimal divideAmount, BigDecimal dividedAmount) { return divideAmount.divide(dividedAmount,2, BigDecimal.ROUND_HALF_EVEN); } /** * 除法,四舍五入保留4位小数。 * * @param divideAmount 金额。 * @param dividedAmount 被除的金额。 * @return 四舍五入保留2位小数后金额。 */ public static BigDecimal divide4ByUp(BigDecimal divideAmount, BigDecimal dividedAmount) { return divideAmount.divide(dividedAmount,4, BigDecimal.ROUND_HALF_EVEN); } /** * 是否大于0。 * * @param amount 金额。 * @return true:大于0;false;小于等于0。 */ public static boolean isGreaterThanZero(BigDecimal amount) { return amount.compareTo(BigDecimal.ZERO) == 1; } /** * 是否小于0。 * * @param amount 金额。 * @return true:小于0;false:大于等于0。 */ public static boolean isLessThanZero(BigDecimal amount) { return amount.compareTo(BigDecimal.ZERO) == -1; } /** * 是否等于0。 * * @param amount 金额。 * @return true:等于0;false:大于小于0。 */ public static boolean isEqualZero(BigDecimal amount) { return amount.compareTo(BigDecimal.ZERO) == 0; } /** * 第一个是否大于第二个。 * * @param first 金额。 * @param second 金额。 * @return true:first>second;false:first<=second。 */ public static boolean isGreaterThan(BigDecimal first, BigDecimal second) { return first.compareTo(second) == 1; } /** * 第一个是否小于第二个。 * * @param first 金额。 * @param second 金额。 * @return true:first<second;false:first >=second。 */ public static boolean isLessThan(BigDecimal first, BigDecimal second) { return first.compareTo(second) == -1; } /** * 第一个是否等于第二个。 * * @param first 金额。 * @param second 金额。 * @return true:first=second;false:first ><second。 */ public static boolean isEqual(BigDecimal first, BigDecimal second) { return first.compareTo(second) == 0; } public static BigDecimal POINT_BILLION = new BigDecimal("100000000"); public static BigDecimal TEN_THOUSANDS = new BigDecimal("10000"); /** * 金额格式化为,###.00的金额,即保留两位小数。 * * @param amount 需要显示成字符传,###.###的金额。 * @return 返回String,格式为,###.###。 */ public static String formatAmountAsString(BigDecimal amount) { return amount != null ? new DecimalFormat(",##0.00").format(amount) : "0.00"; } /** * 将格式化的字符串金额反转为{@link BigDecimal}。 * * @param amount 格式为,###.###。 * @return {@link java.math.BigDecimal}。 */ public static BigDecimal parseAmount(String amount) { return new BigDecimal(amount.replaceAll(",", "")); }
银行金钱计算专用工具类
猜你喜欢
转载自496677829.iteye.com/blog/2312228
今日推荐
周排行