在Java中对于金额的计算,不能用原来的方法
一、加减乘除
BigDecimal a = new BigDecimal(28.62);
BigDecimal b = new BigDecimal(500);
// 加
BigDecimal ab = a.add(b);
// 减
BigDecimal ad = a.subtract(b);
//乘
BigDecimal c = a.multiply(b);
// 除
BigDecimal c = a.divide(b);
二、比较大小
使用 compareTo
前者大于后者 返回 1
前者小于后者 返回 -1
前者等于后者 返回 0
BigDecimal a = new BigDecimal(28.62);
BigDecimal b = new BigDecimal(500);
System.out.println(a.compareTo(b)); // -1
System.out.println(b.compareTo(b)); // 0
System.out.println(b.compareTo(a)); // 1
示例
相除并向下保留八位小数
// 汇率 = (核销借款金额+流水金额)/外币金额(T3)
BigDecimal currencyRate = stateApplyAmount.divide(currencyAmount, 8, ROUND_HALF_DOWN);
特别提示
如果两个金额相除而且除不尽 如10/3
会抛出异常
Non-terminating decimal expansion; no exact representable decimal result.
需要通过保留某些位小数来解决
网友评论