Double类型的值相减时精度丢失
一、问题
在做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 }