一、 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類型數字相加再保留兩位小數,大小比較以及除法運算保留兩位小數。
原創文章,作者:SOODR,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/368498.html