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     }

 

 


 

posted @ 2018-01-25 17:50  wanglittlehandsome  阅读(2799)  评论(0编辑  收藏  举报