两个float相减时丢失精度的解决办法
?????? 运行结果: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