`
jerry_chen
  • 浏览: 282601 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

两个float相减时丢失精度的解决办法

    博客分类:
  • JAVA
 
阅读更多

通常我们习惯这么写:

       float a = 2.123f;   

       float b = 1.101f;   

       System.out.println("a-b=" + (a-b));

       运行结果:a-b=1.022

那么这么写呢?

       a = 2.1235f;   

       b = 1.1012f;   

       System.out.println("a-b=" + (a-b));

       运行结果:a-b=1.0223001

       可我们的期望值是:a-b=1.0223

所以float的精度到了4位之后就得这么写:

       BigDecimal c = new BigDecimal(Float.toString(a));   

       BigDecimal d = new BigDecimal(Float.toString(b));   

       System.out.println("a-b=" + (c.subtract(d)).floatValue());

       运行结果:a-b=1.0223

 

不信你自己试试!

 

原因请参考:[转载]http://blog.csdn.net/fancylovejava/article/details/12027039

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics