精度丟失-解決方法(BigDecimal-加減乘除)
阿新 • • 發佈:2018-11-08
/** * 精度丟失問題解決方法 */ public static void main(String[] args) { double a = 1.0; double b = 0.9; System.out.println(a - b); // 解決精度丟失問題方法如下 BigDecimal big = new BigDecimal(a + ""); BigDecimal big2 = new BigDecimal(b + ""); // 兩個值相加-返回一個BigDecimal物件 BigDecimal subtract = big.subtract(big2); // 將型別轉換為Double型別 System.out.println(subtract.doubleValue()); System.out.println("=========================="); getValue(); } public static void getValue() { BigDecimal one = new BigDecimal("5"); BigDecimal two = new BigDecimal("10"); // 加法: BigDecimal add = one.add(two); System.out.println("(加法)10+5=" + add); // 減法: BigDecimal subtract = two.subtract(one); System.out.println("(減法)10-5=" + subtract); // 乘法: BigDecimal result = one.multiply(two); System.out.println("(乘法)10*5=" + result); // 除法: BigDecimal divide = two.divide(one); System.out.println("(除法)10/5=" + divide); // 取餘: BigDecimal result2 = two.remainder(one); System.out.println("(取餘)10%5=" + result2); } 輸出結果: 0.09999999999999998 0.1 ========================== (加法)10+5=15 (減法)10-5=5 (乘法)10*5=50 (除法)10/5=2 (取餘)10%5=0