BigDecimal是Java中一個用于表示和操作任意精度的十進制數的類。它提供了精確的計算能力,避免了浮點數計算中的舍入誤差。
下面是BigDecimal的常用方法和用法:
創建BigDecimal對象:
BigDecimal num1 = new BigDecimal("10");
BigDecimal num2 = new BigDecimal("3.14");
BigInteger bigInteger = BigInteger.valueOf(1234);
BigDecimal num3 = new BigDecimal(bigInteger);
BigDecimal num4 = BigDecimal.valueOf(1000L);
進行基本的算術運算:
BigDecimal result = num1.add(num2); // 加法
BigDecimal result = num1.subtract(num2); // 減法
BigDecimal result = num1.multiply(num2); // 乘法
BigDecimal result = num1.divide(num2); // 除法,除不盡時會拋出異常
BigDecimal result = num1.divide(num2, 2, RoundingMode.HALF_UP); // 設置保留小數位數和舍入模式
比較大小:
int compare = num1.compareTo(num2); // 返回-1(小于)、0(等于)、1(大于)
boolean equalTo = num1.equals(num2); // 判斷是否相等
設置精度和舍入模式:
BigDecimal result = num1.setScale(2, RoundingMode.HALF_UP); // 設置保留小數位數和舍入模式
轉換為其他類型:
int intValue = num1.intValue(); // 轉換為int類型
long longValue = num1.longValue(); // 轉換為long類型
double doubleValue = num1.doubleValue(); // 轉換為double類型
其他常用方法:
int precision = num1.precision(); // 返回有效位數
int scale = num1.scale(); // 返回小數位數
BigDecimal rounded = num1.round(MathContext.DECIMAL32); // 使用指定的MathContext進行舍入
需要注意的是,由于BigDecimal是不可變類,所有的計算操作都會返回新的BigDecimal對象。另外,對于除法運算可能會拋出異常,因此需要根據具體情況進行異常處理。