由于直接使用double类型的加减乘除,可能会出现不可预测的问题,精度丢失等等。在业务中,计算金额是一件很重要的事情。

可以直接使用BigDecimal类,进行加减乘除。相关BigDecimal类介绍:https://blog.csdn.net/haiyinshushe/article/details/82721234

当然为了业务中方便使用,封装了一个工具类,如下:

import java.math.BigDecimal;

public class BigDecimalUtil {
private BigDecimalUtil() {
} //加
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(v1));
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,2,BigDecimal.ROUND_HALF_UP); //四舍五入,保留两位数字
}
}

最新文章

  1. 使用AutoIT对增加和删除文件属性的实现
  2. JQmeter显示进度条
  3. 【C-顺序程序结构】
  4. For和While在C和MATLAB中的区别——MATLAB的大坑
  5. 用分治法实现大数乘法,加法,减法(java实现)
  6. linux 内核 编绎配制选项详解
  7. Linux命令记录
  8. 大到可以小说的Y组合子(三)
  9. Android开源client之LookAround学习(一)Application & 网络框架
  10. rxjava2学习笔记(1)
  11. js中几种实用的跨域方法原理详解【转】
  12. DuelJS 介绍
  13. Spark SQL External DataSource简介
  14. linux中断源码分析 - 概述(一)
  15. IO 和 NIO 的区别
  16. BZOJ4269:再见Xor(线性基)
  17. MFC中的Invalidate、OnDraw、OnPaint函数的作用
  18. bzoj 3931 最短路+最大流
  19. leetcode693:Binary Number with Alternating Bits
  20. 【POJ】1185 炮兵阵地(状压dp)

热门文章

  1. 学习:C++中的头文件和源文件详解
  2. 实训作业6 (数据I/O)
  3. laravel使用手札——使用PHPStorm提升开发速度
  4. presto docker简单试用
  5. 使用git_stats 统计分析git 仓库代码&& 集成webhook
  6. 洛谷 P2421 [NOI2002]荒岛野人
  7. javascript根据两点和底角,计算等腰三角形的顶点坐标
  8. element ui input 输入时触发事件
  9. CFD-Post批量添加截面
  10. 大数据 | 分布式文件系统HDFS 练习