BigDecimal.setScale主要用于对BigDecimal数据的小数点后位数进行进位、截断、截断等操作。不推荐BigDecimal使用说明,会造成精度损失。BigDecimalnum1=newBigDecimal(2.222222);不推荐,虽然它不会丢失精度BigDecimalnum2=newBigDecimal(2);建议,使用不损失精度的字符串格式构造BigDecimalnum=newBigDecimal("2.222222");BigDecimalRoundingModesROUND_UP=0BigDecimalb=newBigDecimal("2.222222").setScale(2,BigDecimal.ROUND_UP);System.out.println(b);//2.23进位处理,不考虑后面数的大小ROUND_DOWN=1BigDecimalb=newBigDecimal("2.222222").setScale(2,BigDecimal.ROUND_DOWN);系统。out.println(b);//2.22去掉多余的数字,不管后面数字的大小ROUND_CEILING=2BigDecimalb=newBigDecimal("2.222222").setScale(2,BigDecimal.ROUND_CEILING);System.out.println(b);//2.23如果是正数,相当于BigDecimal.ROUND_UPBigDecimalb=newBigDecimal("-2.222222").setScale(2,BigDecimal.ROUND_CEILING);System.out.println(b);//-2.22如果是负数,相当于BigDecimal.ROUND_DOWNROUND_FLOOR=3BigDecimalb=newBigDecimal("2.222222").setScale(2,BigDecimal.ROUND_FLOOR);System.out.println(b);//2.22如果是正数,相当于BigDecimal.ROUND_DOWNBigDecimalb=newBigDecimal("-2.222222").setScale(2,BigDecimal.ROUND_FLOOR);System.out.println(b);//-2.23如果是负数,相当于BigDecimal.ROUND_HALF_UPROUND_HALF_UP=4BigDecimalb=newBigDecimal("2.222222").setScale(2,BigDecimal.ROUND_HALF_UP);System.out.println("ROUND_HALF_UP"+b);//2.22按照后面的数(大于等于5)四舍五入ROUND_HALF_DOWN=5BigDecimalb=newBigDecimal("2.222222").setScale(2,BigDecimal.ROUND_HALF_DOWN);System.out.println("ROUND_HALF_DOWN"+b);//2.22按照下面的数四舍五入(大于5)ROUND_HALF_EVEN=6BigDecimalb=newBigDecimal("2.222222").setScale(2,BigDecimal.ROUND_HALF_EVEN);System.out.println(b);//2.22如果舍弃部分左边的数为偶数,则为ROUND_HALF_DOWNBigDecimalb=newBigDecimal("2.222222").setScale(2,BigDecimal.ROUND_HALF_EVEN);System.out.println(b);//2.22如果舍弃部分左边的数为奇数,则使用ROUND_HALF_UPROUND_UNNECESSARY=7BigDecimalb=newBigDecimal("2.22").setScale(3,BigDecimal.ROUND_UNNECESSARY);System.out.println(b);//刻度位数必须小于或等于小数位数,否则会抛出异常:java.lang.ArithmeticException:需要四舍五入
