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方法.有难度的便是用字符串构造复数了, ...
随机推荐
- [Leetcode 108]有序数组转二叉搜索树Convert Sorted Array to Binary Search Tree
[题目] 给出的升序排序的数组,个数必为奇数,要求形成二叉搜索(平衡)树. [思路] 辅助函数fun,[0,len]=>[0,mid-1]+[mid+1,len]. 当left>right ...
- JAVA数据库操作回滚小结
一:总结的原因 在最近的工作中,遇到了一个一对多关系多表数据传输,传送成功状态绑定在主数据表上,因为代码不健壮问题造成了主表传送状态更新失败,而子表数据就被重复插入.又由于数据传输频率很高,我们的测试 ...
- windows环境搭建Vue开发环境
一.安装node.js(https://nodejs.org/en/) 下载完毕后,可以安装node,建议不要安装在系统盘(如C:). 二.设置nodejs prefix(全局)和cache(缓存)路 ...
- nginx——优化 Nginx 站点目录
1. 禁止解析指定目录下的指定程序 location ~ ^/data/.*.(php|php5|sh|pl|py)$ { # 根据实际来禁止哪些目录下的程序,且该配置必须写在 Nginx 解析 PH ...
- getfacl
ACL即Access Control List 主要的目的是提供传统的owner,group,others的read,write,execute权限之外的具体权限设置,ACL可以针对单一用户.单一文件 ...
- Linux_x86下NX与ASLR绕过技术(续)
四.Stack Canaries 首先看一下Stack Canaries演进历史: Stack Guard 是第一个使用 Canaries 探测的堆栈保护实现,它于 1997 年作为 GCC 的一个扩 ...
- MAC如何生成SSH key与GitHub关联
一.检查 SSH key 是否存在 在终端输入如下代码: ls -al ~/.ssh 如果没有,终端显示如下: No such file or directory 如果有,终端显示如下: ➜ ~ ls ...
- https加载非https资源时不出现问题
老规矩,国服第一博客copy王,原文链接:https://blog.csdn.net/zhengbingmei/article/details/81325325将系统变成了https访问之后,发现部分 ...
- bzoj 2460 线性基
#include<bits/stdc++.h> #define ll long long #define LL long long #define int long long using ...
- NN 激活函数 待修改
Softmax 函数/算法 https://www.zhihu.com/question/23765351 RELU 激活函数及其他相关的函数 http://blog.csdn.net/u013146 ...