Java double 加、减、乘、除
double类型的数值接相加的时候,结果可能出现精度误差
为此Java提供了高精度计算的方法:java.math.*里面提供了BigDecimal类
import org.junit.Test; import java.math.BigDecimal;
import java.math.MathContext; /**
* @author ceshi
* @Title: BigDecimalUtil
* @ProjectName BigDecimalUtil
* @Description: TODO
* @date 2018/7/2719:30
*/
public class BigDecimalUtil { @Test
public void test(){
System.out.println(add(0.02,0.03));
System.out.println(subtraction(0.05,0.03,2));
System.out.println(multiplication(0.2,0.3));
System.out.println(division(0.02,0.03,2));
System.out.println(divisionRounding(0.5,0));
} /**
* double加法
* @param a
* @param b
* @return
*/
public double add(double a, double b) {
BigDecimal b1=new BigDecimal(a);
BigDecimal b2 = new BigDecimal(b);
return b1.add(b2).doubleValue();
} /**
* double减法
* @param a
* @param b
* @param setPrecision 设置精度
* @return
*/
public static double subtraction(double a, double b,int setPrecision) {
BigDecimal b1 = new BigDecimal(a);
BigDecimal b2 = new BigDecimal(b);
return b1.subtract(b2,new MathContext(setPrecision)).doubleValue();
} /**
* double乘法 结果保留两位小数
* @param a
* @param b
* @return
*/
public static double multiplication(double a, double b) {
BigDecimal b1 = new BigDecimal(a);
BigDecimal b2 = new BigDecimal(b);
return b1.multiply(b2).doubleValue();
} /**
* double除法
* @param a
* @param b
* @param accurate 结果保留位数
* @return
*/
public static double division(double a, double b,int accurate) {
if (accurate < 0) {
throw new RuntimeException("精确度必须是正整数或零");
}
BigDecimal b1 = new BigDecimal(a);
BigDecimal b2 = new BigDecimal(b);
return b1.divide(b2, accurate, BigDecimal.ROUND_HALF_UP).doubleValue();
} /**
* double除法 四舍五入
* @param a
* @param scale accurate 小数点后留几位
* @return
*/
public static double divisionRounding(double a, int scale) {
if (scale < 0) {
throw new RuntimeException("精确度必须是正整数或零");
}
BigDecimal b = new BigDecimal(a);
BigDecimal one = new BigDecimal("1");
return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
} }
运行结果:

Java double 加、减、乘、除的更多相关文章
- JAVA日期加减运算
1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...
- java日期加减
1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...
- Java 日期加减
import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; public class Test ...
- java日期加减操作
1.用java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...
- Java 日期加减计算.
1.用Java.util.Calender来实现 Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()) ...
- java日期加减年月日
/** * 日期相加减 * @param time * 时间字符串 yyyy-MM-dd HH:mm:ss * @param num * 加的数,-num就是减去 * @return * 减去相应的数 ...
- java 精确加减
/** * 提供精确的加法运算. * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public double add(double v1, dou ...
- Java-杂项:Float 加减精度问题
ylbtech-Java-杂项:Float 加减精度问题 1.返回顶部 1. java float 加减精度问题在取这个字段的时候转换成BigDecimal就可以了同时,BigDecimal是可以设置 ...
- java将复数字符串虚部实部分离,并实现加减运算
java字符串构造复数 将字符串分解为复数的实部和虚部 定义一个复数类,数据成员有实部和虚部,根据传参不同构造方法重载,并定义复数的加减方法,以及toString方法.有难度的便是用字符串构造复数了, ...
随机推荐
- 基于vue的实战步骤
1.脚手架vue-cli安装 npm install -g vue-cli (npm init -f 生成package.json文件) vue init webpack myapp cd myapp ...
- Django进阶之CSRF
简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功能有 ...
- Python随笔--序列
- Hashmap的学习整理
这是我大致了解Hashmap的第一个博客:https://www.cnblogs.com/chengxiao/p/6059914.html 我将摘录里面的重点: 哈希表的主干就是数组 存储位置 = f ...
- java 集合之Map
Map的功能方法 方法put(Object key,Object value)添加一个"值"(想要得东西)和与"值"相关的"键"(key)( ...
- nginx——Nginx 防爬虫优化
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediap ...
- __FILES__
_FILE_ :被称为PHP魔术常量 ,返回当前执行PHP脚本的完整路径和文件名,包含一个绝对路径 1)dirname(__FILE___) 函数返回的是脚本所在在的路径. 比如文件 b.php ...
- CSS 隐藏ul
老师要求只能用css做出覆盖ul时显示ul,之前一直在试 [ display:none display:block ]后来发现一直是闪烁的状态 不能实现消失 然后就试用了透明度,一下就可以了 ...
- 【oracle入门】Oracle数据库11g企业版主要优点
高可靠性.能够尽可能地放置服务器故障.站点故障和人为错误的发生. 高安全信息.可以利用行级安全性.细粒度审计.透明的数据加密和数据的全面会议确保数据安全和遵守法规. 更好的数据管理.轻松管理最大型数据 ...
- Dubbo的Filter链梳理---分组可见和顺序调整
前言: 刚刚写了篇博文: Dubbo透传traceId/logid的一种思路, 对dubbo的filter机制有了一个直观的理解. 同时对filter也多了一些好奇心, 好奇filter链是如何组织的 ...