double发生精度丢失的解决办法
发生精度丢失的原因:
个人理解:机器在运行时,使用2进制形式的计数方式,而我们日常生活中的计算是10进制的,对于整数的加减乘除,double还能适用,但是对于有小数的,则容易发生精度丢失,即用2进制表示10进制小数时,部分小数只是近似的表示,2进制表示不完全准确,此时,只能用BigDecimal来进行精确的精度计算。
double d1=5.0;
double d2=4.9;
BigDeciaml b1=new BigDeciaml(d1);
BigDecimal b2=new BigDecimal(d2);
加法运算:
double sum=b1.add(b2).doubleValue();
减法运算:
double sub=b1.subtract(b2).doubleValue();
乘法运算:
double mul=b1.multiply(b2).doubleValue();
除法运算:
//scale表示指定保留几位小数,若发生除不尽的情况,则按四舍五入来保留小数
double div=b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
只保留小数位数的两种方法:
1)double num1=b1.divide(1,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
2)BigDecimal bg=new BigDecimal(d1);
double num2=bg.setScale(scale,BigDecimal.ROUND_HALF_UP).douleValue();
3)DecimalFormat bg=new DecimalFormat("###0.00");
double num3=bg.format(d1);
4)String num4=String.format("%.2f",d1);//与C语言的打印输出类似
String num5=String.format("%.2f,%.3f,%.3f",d1,d1,d3);
注意:doubleValue() 将此BigDecimal 转换为 double
double发生精度丢失的解决办法的更多相关文章
- Source InSight context 窗口丢失的解决办法
我没关si的情况下强制关机导致的 Source InSight context 窗口丢失的解决办法 (2010-09-03 13:35:45) 转载▼ 今天早晨改改CLI,上了趟WC,回来发现 ...
- Asp.Net保存session的三种方法 (Dll文件更新导致session丢失的解决办法)
1. InProc模式(默认值):asp.net将session保存到当前进程中,这种方式最快,但是不能多台服务器共享session,且会话状态数据容易丢失. <sessionState mod ...
- 在IE浏览器中iframe跨域访问cookie/session丢失的解决办法
单点登录需要在需要进入的子系统B中添加一个类,用于接收A系统传过来的参数: @Action(value = "outerLogin", results = { @Result(na ...
- float,double等精度丢失问题 float,double内存表示
问题提出:12.0f-11.9f=0.10000038,"减不尽"为什么? 来自MSDN的解释: http://msdn.microsoft.com/zh-cn/c151dt3s. ...
- Java:利用BigDecimal类巧妙处理Double类型精度丢失
目录 本篇要点 经典问题:浮点数精度丢失 十进制整数如何转化为二进制整数? 十进制小数如何转化为二进制数? 如何用BigDecimal解决double精度问题? new BigDecimal(doub ...
- Session丢失的解决办法小结
最近在做ASP.NET项目时,测试网站老是取不出Session中的值,在网上搜索了一下,找到一些解决方法,记录在这里.最后使用存储在StateServer中的办法解决了问题. SessionState ...
- GDI+中发生一般性错误的解决办法
这个错误经常发生,代码如下: private static byte[] GetBytes (Image image) { try { if (image == null) return null ...
- GDI+中发生一般性错误的解决办法(转帖)
今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现“GDI+中发生一般性错误”的异常.于是开始“ ...
- WAMPServer安装关于MSVCR110.dll丢失的解决办法
安装完成后出现如下提示: 解决办法 请参阅:计算机中丢失 msvcr110.dll 怎么办 为了防止原地址失效,下面简单说下原地址的内容: 到 http://www.microsoft.com/zh ...
随机推荐
- Hibernate_14_数据连接池的使用
在主配置文件Hibernate.cfg.xml中设置: <!-- 设置默认的事务隔离级别: 隔离级别 相应的整数表示 READ UNCOMMITED 1 READ COMMITED 2 REPE ...
- huawei校招测试题
三道题两小时. 第一题,圈住所有点的长方形,很简单略过. 第二题:奇偶排序. 奇偶排序 描述: 输入若干(不超过1000个)非负整数数字,请先取出为奇数的数字按从大到小排序,再取出偶数从小到大进行排序 ...
- Eclipse中的Web项目自己主动部署到Tomcat
一.原因. 1.写java程序有一段时间了,但非常久没用eclipse了.所以使用eclipse编写的web项目部署到tomcat 的方式也不是非常清楚,以下记录一下将Eclipse 上的web项目自 ...
- curl: (7) Failed to connect to 127.0.0.1 port 1086: Connection refused
今天我用curl命令,无论如何都是出现: curl: (7) Failed to connect to 127.0.0.1 port 1086: Connection refused 找了很久,不知道 ...
- java8--面向对象 下(疯狂java讲义3) 复习笔记
1.如果一个包装类和一个基本类型比较大小,或者是两个基本类型进行比较大小,直接用==就好: 如果是两个包装类进行比较大小,那么使用equals(),返回值是true,false,或者使用Xxx.com ...
- jvm 调优(2)垃圾回收算法
可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数. ...
- Hive两种访问方式:HiveServer2 和 Hive Client
老版HiveClient: 要求比较多,需要Hive和Hadoop的jar包,各配置环境. HiveServer2: 使得与YARN和HDFS的连接从Client中独立出来, ...
- umask文件屏蔽字的使用【学习笔记】
#include "apue.h" #include <fcntl.h> #define RWRWRW (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP ...
- 通过ODC方法改善软件测试:3个案例研究
正交缺陷分类法(ODC)是一种用于分析软件缺陷的归类方法.它可以结合软件开发过程的一系列数据分析技术,为测试组织提供了一个强大的针对开发过程和软件产品的评估方法.在本篇文章中,会列举三个案例研究来说明 ...
- 阮一峰 KMP BM算法
存一个链接,讲得好啊! 点击这里打开 字符串KMP 点击这里打开 字符串匹配的Boyer-Moore算法