博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在进行商业运算时解决BigDecimal的精度丢失问题
阅读量:4639 次
发布时间:2019-06-09

本文共 962 字,大约阅读时间需要 3 分钟。

System.out.println(0.05+0.01);

System.out.println(1.0-0.42);
System.out.println(4.015*100);
System.out.println(123.3/100);

在运行这段代码时就会发现一些列的问题,java并不像其他语言那样对货币的运算有特殊的处理,一切只能靠自己造轮子了

public static BigDecimal add(double v1,double v2) {

BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2);
}
public static BigDecimal sub(double v1,double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v2));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2);
}
public static BigDecimal mul(double v1,double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2);
}
public static BigDecimal div(double v1,double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2);
}

转载于:https://www.cnblogs.com/chenligeng/p/9952818.html

你可能感兴趣的文章
反射的所有api
查看>>
上传文件
查看>>
css 定位及遮罩层小技巧
查看>>
用java向mysql数据库中插入数据为空
查看>>
项目中非常有用并且常见的ES6语法
查看>>
mac 端口转发方案
查看>>
[2017.02.23] Java8 函数式编程
查看>>
Knowledge Point 20180305 数据在计算机中的表示
查看>>
谈谈对web标准的理解
查看>>
求二进制中1的个数(编程之美2.1)
查看>>
58前端内推笔试2017(含答案)
查看>>
Java学习笔记
查看>>
sprintf 和strcpy 的差别
查看>>
打表打表何谓打表?
查看>>
MPEG4与.mp4
查看>>
实验5
查看>>
git 下载 安装
查看>>
录制终端信息并回放
查看>>
JS中window.event事件使用详解
查看>>
ES6深入学习记录(一)class方法相关
查看>>