JAVA中使用浮点数类型计算时,计算精度的问题
标题 在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去做
最新文章
- Java的修饰符
- 脚手架搭建的vue项目里引入jquery和bootstrap
- 开发者所需要知道的 iOS 10 SDK 新特性
- ztree已拥有权限显示
- javaweb project create
- JavaBean的toString方法工具类
- docker进程管理
- 第1章 Java中常用字符串方法总结
- PostgreSQL增删数据命令示例
- linux-多线程
- MySQL优化器cost计算
- Signalr简单入门,使用注意点
- 那些容易忽略的事4-(正则表达式反向引用\n)
- jquery.sortable.js源代码解读
- jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
- JQuery - 去除所有空格
- C缺陷与陷阱----读书笔记---第一章
- 全方位分析Objcetive-C Runtime 分类: ios技术 2015-03-11 22:29 77人阅读 评论(0) 收藏
- [android] 保存联系人到系统通讯录
- date_default_timezone_set()问题解决方案(PHP5.3以上的)
热门文章
- json.dumps(),json.loads(),json.dump(),json.load()方法的区别
- git 新建本地分支后将本地分支推送到远程库, 使用git pull 或者 git push 的时候报错
- Django框架----Form组件补充
- 使用Wisdom RESTClient如何在Linux和Mac上获取测试报告和API文档?
- Elasticstarch 相关
- JavaScript修改元素
- vs2015 dx15开发教程一
- 2018-2019-2 《网络对抗技术》Exp3 免杀原理与实践 20165211
- 运行django新的项目,页面总是显示以前的项目,问题解决
- uniGUI试用笔记(十)