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     }

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM