您的位置:

Bigdecimal四舍五入保留两位小数

一、 Bigdecimal保留两位小数


public static BigDecimal roundToTwoDecimalPlaces(BigDecimal number) {
    return number.setScale(2, RoundingMode.HALF_UP);
}

在使用BigDecimal进行计算时,很常见的一种需求就是要保留小数位数。

来看一个简单的例子,我们需要计算1.111111+2.2222222的结果,再保留两位小数。代码如下:


BigDecimal num1 = new BigDecimal("1.111111");
BigDecimal num2 = new BigDecimal("2.2222222");

BigDecimal result = num1.add(num2);
result = result.setScale(2, RoundingMode.HALF_UP);

System.out.println(result);

运行结果为3.33。这里我们使用setScale方法来将结果保留两位小数。

二、bigdecimal保留4位小数四舍五入


public static BigDecimal roundToFourDecimalPlaces(BigDecimal number) {
    return number.setScale(4, RoundingMode.HALF_UP);
}

除了保留两位小数,有时也需要保留四位小数。但有时候会出现连续四个数字都小于5,就会出现舍弃的情况。这时需要四舍五入。

比如我们需要计算1.1111+2.2222的结果,再保留四位小数:


BigDecimal num1 = new BigDecimal("1.1111");
BigDecimal num2 = new BigDecimal("2.2222");

BigDecimal result = num1.add(num2);
result = result.setScale(4, RoundingMode.HALF_UP);

System.out.println(result);

运行结果为3.3333。

三、BigDecimal两位小数四舍五入后相加


public static BigDecimal addTwoNumbersAndRoundToTwoDecimalPlaces(BigDecimal num1, BigDecimal num2){
    return roundToTwoDecimalPlaces(num1.add(num2));
}

有时候我们需要将两个BigDecimal类型的数字相加后再四舍五入保留两位小数,代码如下:


BigDecimal num1 = new BigDecimal("1.1111");
BigDecimal num2 = new BigDecimal("2.2222");

BigDecimal result = addTwoNumbersAndRoundToTwoDecimalPlaces(num1, num2);

System.out.println(result);

运行结果为3.33。

四、BigDecimal比较大小


public static boolean isGreaterThan(BigDecimal num1, BigDecimal num2){
    return num1.compareTo(num2) > 0;
}

public static boolean isLessThan(BigDecimal num1, BigDecimal num2){
    return num1.compareTo(num2) < 0;
}

public static boolean isEqualTo(BigDecimal num1, BigDecimal num2){
    return num1.compareTo(num2) == 0;
}

在使用BigDecimal进行大小比较时,不能直接使用==或者<、>这样的操作符,应该使用compareTo()方法。来看一个简单的例子:


BigDecimal num1 = new BigDecimal("1.1111");
BigDecimal num2 = new BigDecimal("2.2222");

if(isGreaterThan(num2, num1)){
    System.out.println("num2 is greater than num1.");
}

运行结果为num2 is greater than num1。

五、BigDecimal除法保留两位小数


public static BigDecimal divideToTwoDecimalPlaces(BigDecimal num1, BigDecimal num2){
    BigDecimal result = num1.divide(num2, 2, RoundingMode.HALF_UP);
    return result;
}

在进行BigDecimal类型的除法运算时,我们同样可以使用setScale进行保留小数位数,代码如下


BigDecimal num1 = new BigDecimal("5");
BigDecimal num2 = new BigDecimal("2");

BigDecimal result = num1.divide(num2, 2, RoundingMode.HALF_UP);

System.out.println(result);

结果为2.50。

六、总结

本文介绍了在Java中使用BigDecimal进行四舍五入保留小数位数的方法,包括保留两位小数、四位小数,BigDecimal类型数字相加再保留两位小数,大小比较以及除法运算保留两位小数。