一、問題
在做double類型運算時,發現某些double值相減會導致結構精度丟失。
二、原因
圖1
圖2
會發現在精度在分的情況下,double相減會丟失精度變成處理16位有效數。那么這種情況在算金額時就是錯誤的,如果自己寫一個保留法又不靠譜。
這種情況下就要使用
java.math.BigDecimal;
1 @Test 2 public void xx() throws Exception { 3 Double b = 125.11; 4 Double reduce = 100.10; 5 System.out.println(b-reduce); 6 BigDecimal bone = new BigDecimal(b.toString()); 7 BigDecimal btwo = new BigDecimal(reduce.toString()); 8 System.out.println(bone.subtract(btwo).doubleValue()); 9 }