Java10-BigDecimal使用(位数、舍入、计算、比较、绝对值)

1、保留位数与舍入

1、BigDecimal.setScale(newScale, roundingMode)方法用于格式化小数点

newScale表示保留位数,roundingMode表示舍入模式,舍入模式一共有8种,其值分别从0到7。

ROUND_UP0;        // 向上舍入,远离零方向舍入
ROUND_DOWN1;        // 向下舍入,向零方向舍入
ROUND_CEILING2;        // 向正无限大方向舍入
ROUND_FLOOR3;        // 向负无限大方向舍入
ROUND_HALF_UP4;        // 四舍五入:向最接近的数字方向舍入,如果与两个相邻数字的距离相等,则向上舍入
ROUND_HALF_DOWN5;        // 五舍四入:向最接近的数字方向舍入,如果与两个相邻数字的距离相等,则向下舍入
ROUND_HALF_EVEN6;        // 向最接近数字方向舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入
ROUND_UNNECESSARY7;        // 用于断言请求的操作具有精确结果,因此不发生舍入

roundingMode参数在书写过程中可以用左边的写法,也可以用右边值代替。

举例:

public static void main(String[] args) throws ParseException {
    BigDecimal data = new BigDecimal("2.346");
    BigDecimal data1 = data.setScale(2,4); // 四舍五入
    BigDecimal data2 = data.setScale(2,BigDecimal.ROUND_HALF_UP);// 四舍五入
    BigDecimal data3 = data.setScale(2, BigDecimal.ROUND_UP);// 向上取入
    BigDecimal data4 = data.setScale(2,BigDecimal.ROUND_DOWN); // 向下取入
    BigDecimal data5 = data.setScale(2,BigDecimal.ROUND_HALF_EVEN);//向最接近的舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入
    System.out.println(data1); // 2.35
    System.out.println(data2); // 2.35
    System.out.println(data3); // 2.35
    System.out.println(data4); // 2.34
    System.out.println(data5); // 2.35
}

2、加减乘除计算

2.1 加法 add()
2.2 减法 subtract()
2.3 乘法 multiply()
2.4 除法 divide()

举例:

public static void main(String[] args) throws ParseException {
    BigDecimal data1 = new BigDecimal("2.346");
    BigDecimal data2 = new BigDecimal("2.3");
    System.out.println(data1.add(data2)); // 4.646
    System.out.println(data1.subtract(data2)); // 0.046
    System.out.println(data1.multiply(data2)); // 5.3958
    System.out.println(data1.divide(data2)); // 2.02
}

3、大小比较

BigDecimal使用compareTo() 方法比较大小,输出为0则相等,为1则前面的大,为-1则后面的大
举例:

public static void main(String[] args) throws ParseException {
    BigDecimal data1 = new BigDecimal("2.346");
    BigDecimal data2 = new BigDecimal("2.3");
    if (data1.compareTo(data2) == 0) {
        System.out.println("相等");
    }
    if (data1.compareTo(data2) > 0) {
        System.out.println("data1大"); // 输出
    }
    if (data1.compareTo(data2) < 0) {
        System.out.println("data1小");
    }
}

4、绝对值

4.1 直接获取绝对值:abs()

 BigDecimal data1 = new BigDecimal("-2.346");
 System.out.println(data1.abs()); //2.346

4.2 获取绝对值指定精度:abs(MathContext)

 MathContext mc = new MathContext(2);
 BigDecimal data1 = new BigDecimal("-2.346");
 System.out.println(data1.abs(mc));//2.3

你可能感兴趣的:(4-Java高级特性,java,前端,javascript)