- java中对double类型的小数经常会有小数点后边保留一位小数或者保留两位小数的需求。
- javaAPi中提供了一个专门的类BigDecimal,用来对超过16位有效位的数进行精确的运算。
- 使用步骤:
//定义一个double类型的数字
double number = 3.25
//先将double类型的数字转换为BigDecimal类型。
BigDecimal bigDecimal = new BigDecimal(number)
//调用BigDecimal的 setScale(int newScale, int roundingMode)方法
//参1指保留几位小数 参2 指舍位时候的模式
//远离0的模式 3.21--> 3.3
BigDecimal scaleNumber1 = bigDecimal.setScale(1, BigDecimal.ROUND_UP)
//接近0的模式 3.21--> 3.2
BigDecimal scaleNumber2 = bigDecimal.setScale(1, BigDecimal.ROUND_DOWN)
//接近正无穷大的模式 3.21--> 3.3
BigDecimal scaleNumber3 = bigDecimal.setScale(1, BigDecimal.ROUND_CEILING)
//接近负无穷大的模式 3.21--> 3.2
BigDecimal scaleNumber4 = bigDecimal.setScale(1, BigDecimal.ROUND_FLOOR)
//5舍6入的模式 3.21--> 3.2 3.25-->3.2 3.26-->3.3
BigDecimal scaleNumber5 = bigDecimal.setScale(1, BigDecimal.ROUND_HALF_DOWN)
//4舍5入的模式 3.24--> 3.2 3.25--> 3.3
BigDecimal scaleNumber6 = bigDecimal.setScale(1, BigDecimal.ROUND_HALF_UP)
System.out.println(scaleNumber1)
System.out.println(scaleNumber2)
System.out.println(scaleNumber3)
System.out.println(scaleNumber4)
System.out.println(scaleNumber5)
System.out.println(scaleNumber6)
- 根据自己的需求来确定小数点的位数即可。
- 下面是api中模式的解释。
