关于float的精度丢失总结

来源:互联网 发布:万方数据库账号 编辑:程序博客网 时间:2024/06/06 00:37

最近在项目中遇到这么一个问题: 在提交支付的金额进行前后台的校验遇到两个金额不同的情况,我查询日志后发现是float精度丢失引起的;以下的代码运行后输出的是多少呢?

        float a = 0;        a = a + Float.parseFloat("152348.37");        System.out.println(a);
结果是:152348.38   

[ http://blog.csdn.net/zq602316498/article/details/41148063#]
有兴趣的可以去查看这篇博客,写的很详细。
关于金额精确计算应避免使用float和double进行计算。我自己项目中有关的金额都是从接口直接查询出来的且已取小数点后两位,提交的也是取后台的数据。只是进行简单的金额校验,故使用float方法进行简单的校验。之前其他模块都有进行金额限制在10万以下,金额取的百分位,故不存在精度丢失问题;使用float节省使用内存,现在的模块金额超出float的有效精度,改成使用double类型。

原创粉丝点击