标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改    
关键字     Java 浮点数 精确计算   
问题的提出:
如果我们编译运行下面这个程序会看到什么?
public class Test{
    public static void main(String args[]){
        System.out.println(0.05+0.01);
        System.out.println(1.0-0.42);
        System.out.println(4.015*100);
        System.out.println(123.3/100);
    }
};
你没有看错!结果确实是
0.060000000000000005
0.5800000000000001
401.49999999999994
1.2329999999999999
Java中的简单浮点数类型float和double不能够进行运算。不光是Java,在其它很多编程语言中也有这样的问题。在大多数情况下,计算的结果是准确的,但是多试几次(可以做一个循环)就可以试出类似上面的错误。现在终于理解为什么要有BCD码了。

......

原文地址:http://blog.csdn.net/pttaag/article/details/5912171

这个问题的确是平时工作中经常容易疏忽的一个问题,我自己总结了下,解决的思路有2个:

1.使用BigDecimal方法,构造可以精确计算的方法来解决精度问题(上文中推荐的方法)

2.无视精度计算,在做科学计算或者是工程计算时,在最终输出的时候,进行精度的保留小数点操作

                BigDecimal bigDecimal = new BigDecimal(requirementNum);//四捨五入保留四位小數
requirementNum = bigDecimal.setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue();

PS.方法2,我认为最好不要在JAVA端做,而是应该有前端根据实际业务,选择显示几位。所以推荐使用方法1去做

最新文章

  1. Java的修饰符
  2. 脚手架搭建的vue项目里引入jquery和bootstrap
  3. 开发者所需要知道的 iOS 10 SDK 新特性
  4. ztree已拥有权限显示
  5. javaweb project create
  6. JavaBean的toString方法工具类
  7. docker进程管理
  8. 第1章 Java中常用字符串方法总结
  9. PostgreSQL增删数据命令示例
  10. linux-多线程
  11. MySQL优化器cost计算
  12. Signalr简单入门,使用注意点
  13. 那些容易忽略的事4-(正则表达式反向引用\n)
  14. jquery.sortable.js源代码解读
  15. jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
  16. JQuery - 去除所有空格
  17. C缺陷与陷阱----读书笔记---第一章
  18. 全方位分析Objcetive-C Runtime 分类: ios技术 2015-03-11 22:29 77人阅读 评论(0) 收藏
  19. [android] 保存联系人到系统通讯录
  20. date_default_timezone_set()问题解决方案(PHP5.3以上的)

热门文章

  1. json.dumps(),json.loads(),json.dump(),json.load()方法的区别
  2. git 新建本地分支后将本地分支推送到远程库, 使用git pull 或者 git push 的时候报错
  3. Django框架----Form组件补充
  4. 使用Wisdom RESTClient如何在Linux和Mac上获取测试报告和API文档?
  5. Elasticstarch 相关
  6. JavaScript修改元素
  7. vs2015 dx15开发教程一
  8. 2018-2019-2 《网络对抗技术》Exp3 免杀原理与实践 20165211
  9. 运行django新的项目,页面总是显示以前的项目,问题解决
  10. uniGUI试用笔记(十)