ROUND_UP
截断的小数>0时进一位
//ROUND_UP
BigDecimal zero = new BigDecimal("1.0750000");
BigDecimal one = new BigDecimal("1.0750001");
BigDecimal two = zero.setScale(3,BigDecimal.ROUND_UP);
BigDecimal three = one.setScale(3,BigDecimal.ROUND_UP);
System.out.println("two="+two); //two=1.075
System.out.println("three="+three); //three=1.076
ROUND_DOWN
直接舍弃截断的小数,不在小数位上进一位,不管舍弃的数值有多大
BigDecimal zero = new BigDecimal("1.0740000");
BigDecimal one = new BigDecimal("1.0790001");
BigDecimal two = zero.setScale(2,BigDecimal.ROUND_DOWN);
BigDecimal three = one.setScale(2,BigDecimal.ROUND_DOWN);
System.out.println("two="+two);
System.out.println("three="+three);
two=1.07
three=1.07
ROUND_HALF_UP
四舍五入,数学意义上的四舍五入
BigDecimal zero = new BigDecimal("1.0740000");
BigDecimal one = new BigDecimal("1.0790001");
BigDecimal two = zero.setScale(2,BigDecimal.ROUND_HALF_UP);
BigDecimal three = one.setScale(2,BigDecimal.ROUND_HALF_UP);
System.out.println("two="+two);
System.out.println("three="+three);
two=1.07
three=1.08
ROUND_HALF_DOWN
一开始我以为这个是五舍六入,其实不是
当截取掉的小数位的值>=5,且5后面还有>0的值,就会进一位
BigDecimal zero = new BigDecimal("1.0740001");
BigDecimal one = new BigDecimal("1.075000");
BigDecimal one1 = new BigDecimal("1.075001");
BigDecimal two = zero.setScale(2,BigDecimal.ROUND_HALF_DOWN);
BigDecimal three = one.setScale(2,BigDecimal.ROUND_HALF_DOWN);
BigDecimal three1 = one1.setScale(2,BigDecimal.ROUND_HALF_DOWN);
System.out.println("two="+two);
System.out.println("three="+three);
System.out.println("three1="+three1);
two=1.07
three=1.07
three1=1.08