BigDecimal.ROUND_UP 如果 从 double 到 Decimal 有异常, 必须从double到String然后 Decimal 就可以了

比如:

//先把double==>string==>BigDecimal;直接 double==>BigDecimal 异常比如9.9
BigDecimal decimalRate = new BigDecimal(String.valueOf(lowestDiscountRate)).setScale(1, BigDecimal.ROUND_UP);
BigDecimal.ROUND_UP 是直接进位 比如2.21==》保留一位 2.3


举个栗子:
  double dd=9.9d;
        BigDecimal f1 = new BigDecimal(dd).setScale(1, BigDecimal.ROUND_UP);
        System.out.println(f1); //10.0
        BigDecimal decimalRate = new BigDecimal(String.valueOf(dd)).setScale(1, BigDecimal.ROUND_UP);

        System.out.println(decimalRate);//9.9

结果:

10.0
9.9

原文地址:https://www.cnblogs.com/aspirant/p/12468005.html