语法:// 返回小数点后位数
BigDecimal.setScale();
// setScale len参数指定小数点后位数
BigDecimal.setScale(len);
PS:
setScale(1) 表示保留一位小数,默认用四舍五入方式
setScale(1,BigDecimal.ROUND_DOWN) 直接删除多余的小数位,如4.36会变成4.3
setScale(1,BigDecimal.ROUND_UP) 进位处理,4.36变成4.4
setScale(1,BigDecimal.ROUND_HALF_UP) 四舍五入,4.36变成4.4
setScale(1,BigDecimal.ROUND_HALF_DOWN) 四舍五入末尾大于5向上取舍,小于等于5向下取舍,4.36变成4.4,如果是4.35则向下舍变成4.3
使用:@Test
public void test14() {
BigDecimal price = new BigDecimal(4.35);
// 直接删除多余的小数位,如4.36会变成4.3
System.out.println(price.setScale(1,BigDecimal.ROUND_DOWN));
// 进位处理,4.36变成4.4
System.out.println(price.setScale(1,BigDecimal.ROUND_UP));
// 四舍五入,4.36变成4.4
System.out.println(price.setScale(1,BigDecimal.ROUND_HALF_UP));
// 四舍五入末尾大于5向上取舍,小于等于5向下取舍
System.out.println(price.setScale(1,BigDecimal.ROUND_HALF_DOWN));
//BigDecimal setScale = price.multiply(new BigDecimal(0.9));
}
注意:当setScale(1)只有一个参数时,此处参数为1,如果BigDecimal 小数点后不只一位时会抛出异常 java.lang.ArithmeticException: Rounding necessary ;此时需要指定第二个参数,让程序知道怎么处理多余的位数值。