一、 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类型数字相加再保留两位小数,大小比较以及除法运算保留两位小数。