两个double相减_double类型相减有小数误差
如 :19.9-9.9=9.9999999999999,而不是10double相减会转换成二进制,因double有效位数为 16位这就会出现存储小数位数不够的情况,这种情况下就会出现误差
//两个Double数相加
public static Double add(Double v1,Double v2){
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.add(b2).doubleValue();
}
//两个Double数相减
public static Double sub(Double v1,Double v2){
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.subtract(b2).doubleValue();
}
// 两个Double数相乘
public static Double mul(Double v1,Double v2){
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.multiply(b2).doubleValue();
}
//两个Double数相除
public static Double div(Double v1,Double v2){
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.divide(b2,DEF_DIV_SCALE,BigDecimal.ROUND_HALF_UP).doubleValue();
}
//两个Double数相除,并保留scale位小数
public static Double div(Double v1,Double v2,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
//进行四舍五入
BigDecimal b1 = new BigDecimal(d);
BigDecimal b2 = new BigDecimal(1);
// 任何一个数字除以1都是原数字
// ROUND_HALF_UP是BigDecimal的一个常量,
表示进行四舍五入的操作
return b1.divide(b2, len,BigDecimal.
ROUND_HALF_UP).doubleValue();
}
两个double相减_double类型相减有小数误差相关推荐
- java double保留四位小数_double类型数据保留四位小数的另一种思路
来源:透析公式处理,有时候数据有很长的小数位,有的时候由在四位以内,如果用一般的处理方法,那么不足四位的小树会补充0到第四位,这样子有点画蛇添足的感觉,不太好看.所以要根据小数的位数来处理判断. 思路 ...
- sql中两个时间类型相减得到的值
原文地址为: sql中两个时间类型相减得到的值 原文地址:http://my.oschina.net/zimingforever/blog/57504 sql中两个时间类型相减得到的值 今天有人把数据 ...
- 五十六、从高中碾转相除法、更相减损术算法谈起
@Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题代码化. ---- Runsen 先问你们一个小学问题:如何求两个整数的最大公约数? 曾经见过不少的算法题 ...
- c语言碾转相除法,从高中碾转相除法、更相减损术算法谈起
编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化.「---- Runsen」 先问你们一个小学问题:「如何求两个整数的最大公约数?」 曾经见过不少的算法题,发现有的并不在数据 ...
- 更相减损法java,五十6、从高中碾转相除法、更相减损术算法谈起
「@Author:Runsen」git ❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化.「---- Runsen」github ❞ 先问大家一个小学问题:「如何求两个整 ...
- 更相减损法java,五十六、从高中碾转相除法、更相减损术算法谈起
「@Author:Runsen」❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化.「---- Runsen」❞ 先问你们一个小学问题:「如何求两个整数的最大公约数?」 曾 ...
- Java中比较两个Double类型数据的大小
在java中int类型比较可以用"==",而double类型的数据不能用"= ="比较,否则得到永不相等的结果. 一般可以Double的doubleToLong ...
- c语言求出两个最大素数,求两个正整数的最大公约数 思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法。通式分别为 f(x, y) = f(y, x%y...
求两个正整数的最大公约数 思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法.通式分别为 f(x, y) = f(y, x%y), f(x, y) = f(y, x - y) ( ...
- C中不能直接比较两个double类型
在比较float 和double类型的时候,因为float/double精度的问题,比如1.000000001可能和1.0000000000001相等,不应该直接使用a>b等类似的方式进行比较, ...
最新文章
- python求组合数c_【Python】算法之求组合
- 虚拟化系列-Windows server 2012 虚拟机管理
- Cluster table import - BSP UI component source code is actually stored in cluster table
- Java 使用Collections.reverse对list集合进行降序排序
- 豆瓣上关于一万小时天才理论一书的一个评论
- session在.ashx文件操作问题
- PowerShell实现“机器人定时在企业微信群中发送消息”功能(上)
- manifest离线缓存技术
- docker run -di -p 日志_docker随手笔记第十一节 portainer.io安装使用,比k8s简单
- 新域名后缀的主要优点是什么?
- java 中文分词转拼音_如何实现拼音与汉字的互相转换
- 不知道如何raw转换成jpg格式?可以试试这几个软件
- 东南大学成贤学院计算机类怎么样,东南大学成贤学院什么专业比较好 怎么选择专业...
- 分享几套Easypanel用户后台模板源码优化版
- java求三角形周长 面积_计算三角形的周长和面积 java
- ubuntu设置宽带连接及wifi共享
- Nginx 单IP绑定多域名配置 顶级域名重定向到www域名
- 怎么删除计算机c盘应用,怎样删除电脑c盘中的垃圾
- 外显子和基因组基本概念(二)
- OpenGL播放yuv数据流(着色器SHADER)-IOS(一)
热门文章
- ABB机器人系统输入输出信号System Input和Output详解(二)
- 解决报错:全局安装@tarojs/cli后,使用taro命令报错:无法将“taro”项识别为 cmdlet、函数、脚本文件或可运行的...
- Lucene-4.8.1+paoding-analysis菜鸟试验:中文索引和查询
- 特征点匹配——FAST特征点检测
- 名词解释第二十六讲:热钱包
- DoubleTake for Mac(全景拼图软件)
- api可以主动采集用户数据吗_数据采集方式有哪些,都有什么特点?
- ASP.NET用户自定义分页控件
- 【Axure视频教程】固定中继器表格首列
- matlab判断图片颜色计算像素值