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方法.有难度的便是用字符串构造复数了, ...
随机推荐
- 深入理解之 Android Handler
深入理解之 Android Handler 一,相关概念 在Android中如果通过用户界面(如button)来来启动线程,然后再线程中的执行代码将状态信息输出到用户界面(如文本框),这时候就会抛 ...
- Alpha冲刺6
前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10004107.html 作业博客:https://edu.cnblogs.com/campus ...
- WEBBASE篇: 第四篇, CSS知识2
CSS知识2 一, 尺寸 与 边框 CSS单位 1,尺寸单位:(1)px 像素 (2)% (3) in 英寸 lin = 2.54cm (4)pt 磅 1pt = 1/72in ppi ...
- C语言笔记1
第一部分 计算机常识 1,人与计算机交流 2,人机交互方式 3,计算机的组成结构 4,计算机的系统组成 5,进制 6,程序和指令 第二部C开发环境 1 人与计算机交流 现实中人与人交流靠语言,那么人 ...
- idea快捷键的设置
因为开始学java被培训机构里的无良老师给带偏,"染上了"MyEclipse的快捷键"恶习",于是很难改了. 所以,在使用idea时,要设置快捷键了,快点适应之 ...
- Python if语句
a=99 b=input("请输入一个数字:") int(b) if a >b: print("欢迎来到Python") eilf a=b: print( ...
- 基于tensorflow的逻辑分类
#!/usr/local/bin/python3 ##ljj [2] ##logic classify model import tensorflow as tf import matplotlib. ...
- 工作中 sql 整理(一)
这篇文章记录关于SQL的内容,有些凌乱,是工作中点滴的积累,只能按照时间顺序,逐次记录. 一.update 关联更新 1.需求 Table A TableB A表中的主键和B表中的主键相关联,关联 ...
- sso cas4.0改造历程--spring-webflow篇
https://blog.csdn.net/sinat_20689109/article/details/54910642
- OLAP + MDX
基本概念 维度(Dimension):表示数据的属性,一个维度一般会有一个维表(也可能多个),事实表会有一个字段关联维表. 退化维度:有的维度可以没有维度表,因为这种维度比较简单,没有更多属性,没有必 ...