java常用類:BigDecimal
阿新 • • 發佈:2020-12-27
BigDecimal
很多實際應用中需要精確運算,而double是近似值儲存,不符合要求,需要藉助BigDecimal用來對超過16位有效位的數進行精確的運算
-
位於 java.math包裡
-
作用:精確計算浮點數
-
建立方式:BigDecimal bd=new BigDecimal("1.0");
-
BigDecimal一共有4個構造方法:
String 構造方法是完全可預知的:寫入 newBigDecimal("0.1") 將建立一個 BigDecimal,它正好等於預期的 0.1
通常建議優先使用String構造方法BigDecimal(String)
public class Demo01 { public static void main(String[] args) { BigDecimal bd1 = new BigDecimal("1.0"); BigDecimal bd2 = new BigDecimal("0.9"); //減法 BigDecimal r1 = bd1.subtract(bd2); System.out.println(r1); //加法 BigDecimal r2 = bd1.add(bd2); System.out.println(r2); //乘法 BigDecimal r3 = bd1.multiply(bd2); System.out.println(r3); //除法 BigDecimal r4 = new BigDecimal("1.4") .subtract(new BigDecimal("0.5")) .divide(new BigDecimal("0.9")); System.out.println(r4); //不能整除的情況,會報錯java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. //public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) // 第一引數表示除數, 第二個引數表示小數點後保留位數,第三個引數表示舍入模式 //ROUND_HALF_UP 四捨五入 System.out.println(new BigDecimal("10") .divide(new BigDecimal("3"), 2, BigDecimal.ROUND_HALF_UP)); } } //結果 //0.1 //1.9 //0.90 //1 //3.33