在Java中處理貨幣金額的計算,推薦使用BigDecimal
類,因為它可以避免浮點數計算中的精度問題
java.math.BigDecimal
:import java.math.BigDecimal;
BigDecimal
對象:BigDecimal amount1 = new BigDecimal("10.5");
BigDecimal amount2 = new BigDecimal("3.14");
// 加法
BigDecimal sum = amount1.add(amount2);
// 減法
BigDecimal difference = amount1.subtract(amount2);
// 乘法
BigDecimal product = amount1.multiply(amount2);
// 除法
BigDecimal quotient = amount1.divide(amount2, 2, RoundingMode.HALF_UP); // 保留兩位小數,四舍五入
注意:在進行除法運算時,需要指定小數點后保留的位數和舍入模式。RoundingMode
類提供了多種舍入模式,如HALF_UP
(四舍五入)、DOWN
(向下取整)等。
int result = amount1.compareTo(amount2);
if (result > 0) {
System.out.println("amount1 > amount2");
} else if (result < 0) {
System.out.println("amount1< amount2");
} else {
System.out.println("amount1 == amount2");
}
BigDecimal
轉換為其他數據類型:double doubleValue = amount1.doubleValue();
long longValue = amount1.longValue();
總結:使用BigDecimal
類處理貨幣金額計算,可以避免浮點數計算中的精度問題,確保計算結果的準確性。