String num = "5.66";
int jd1 = 0;
int jd2 = 1;
BigDecimal b1 = new BigDecimal(num).setScale(jd1, BigDecimal.ROUND_DOWN);
BigDecimal b2 = new BigDecimal(num).setScale(jd1, BigDecimal.ROUND_HALF_DOWN);
BigDecimal b3 = new BigDecimal(num).setScale(jd2, BigDecimal.ROUND_DOWN);
BigDecimal b4 = new BigDecimal(num).setScale(jd2, BigDecimal.ROUND_HALF_DOWN);
System.out.println("b1:" + b1);
System.out.println("b2:" + b2);
System.out.println("b3:" + b3);
System.out.println("b4:" + b4);
BigDecimal b5 = new BigDecimal(num).setScale(jd1, BigDecimal.ROUND_UP);
BigDecimal b6 = new BigDecimal(num).setScale(jd1, BigDecimal.ROUND_HALF_UP);
BigDecimal b7 = new BigDecimal(num).setScale(jd2, BigDecimal.ROUND_UP);
BigDecimal b8 = new BigDecimal(num).setScale(jd2, BigDecimal.ROUND_HALF_UP);
System.out.println("b5:" + b5);
System.out.println("b6:" + b6);
System.out.println("b7:" + b7);
System.out.println("b8:" + b8);
运行结果:
b1:5
b2:6
b3:5.6
b4:5.7
b5:6
b6:6
b7:5.7
b8:5.7
结论:
BigDecimal.ROUND_DOWN:舍去多余小数位
官方解释:向零方向舍入的舍入模式。
BigDecimal.ROUND_HALF_DOWN:五舍六入
官方解释:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。
BigDecimal.ROUND_UP:舍去多余小数位后最后一位+1
官方解释:远离零方向舍入的舍入模式。
BigDecimal.ROUND_HALF_UP:四舍五入
官方解释:向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。
网友评论