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