BigDecimal 计算工具类
BigDecimalUtil 计算工具类
加
减
乘
除
四舍五入保留两位小数
舍弃小数 , 大于0上升
舍弃小数, 直接丢弃
package com.rely.base.utils;import java.math.BigDecimal;/*** TODO BigDecimalUtil 小数处理工具类, 所有方法默认四舍五入,* <p>* BigDecimalUtil.MONEY_POINT 小数位数默认保留2,暂不支持自定义* <p>* BigDecimalUtil.mc ==> 四舍五入* BigDecimalUtil.mcDown ==> 舍弃 ===> 直接舍弃指定位数后的小数,如:1.9 = 1* BigDecimalUtil.mcUp ==> 上升 ===> 舍弃指定位数后的小数,舍弃后小数的最后一位只要大于0就加1 --> 如: 1.1 = 2** @author ws* @mail 1720696548@qq.com* @date 2020/4/24 0024 9:51* @return*/
public class BigDecimalUtil {// /**
// * TODO 货币保留两位小数
// */
// public static final int MONEY_POINT = 2;
// // 四舍五入( HALF_UP 5向上取,HALF_DOWN 5向下取)
// public static MathContext mc = new MathContext(MONEY_POINT + 1, RoundingMode.HALF_UP);
// // 舍弃 ===> 直接舍弃指定位数后的小数(FLOOR = 地板)
// public static MathContext mcDown = new MathContext(MONEY_POINT + 1, RoundingMode.FLOOR);
// // 上升 ===> 舍弃指定位数后的小数, 舍弃后小数的最后一位只要 >0 就加1 (FLOOR = 天花板)
// public static MathContext mcUp = new MathContext(MONEY_POINT + 1, RoundingMode.CEILING);//==========================================================================//============================== 具体方法 ===================================//==========================================================================// TODO BigDecimal 相加public static BigDecimal add(BigDecimal v1, BigDecimal v2) {if (v1 == null) {v1 = new BigDecimal("0");}if (v2 == null) {v2 = new BigDecimal("0");}return v1.add(v2);}// TODO BigDecimal 相减public static BigDecimal subtract(BigDecimal v1, BigDecimal v2) {if (v1 == null) {v1 = new BigDecimal("0");}if (v2 == null) {v2 = new BigDecimal("0");}return v1.subtract(v2);}// TODO BigDecimal 相乘public static BigDecimal multiply(BigDecimal v1, BigDecimal v2) {if (v1 == null) {v1 = new BigDecimal("0");}if (v2 == null) {v2 = new BigDecimal("0");}return v1.multiply(v2);}// TODO BigDecimal 相除public static BigDecimal divide(BigDecimal v1, BigDecimal v2) {if (v1 == null) {v1 = new BigDecimal("0");}if (v2 == null) {v2 = new BigDecimal("0");}return v1.divide(v2,2, BigDecimal.ROUND_HALF_UP);}/*** TODO 四舍五入保留两位小数 ( HALF_UP 5向上取,HALF_DOWN 5向下取)*/public static BigDecimal parse(BigDecimal bg) {return bg.setScale(2, BigDecimal.ROUND_HALF_UP);}/*** TODO 上升 ===> 舍弃指定位数后的小数, ( CEILING= 天花板) ==> 舍弃后小数的最后一位只要 >0 就加1*/public static BigDecimal parseUP(BigDecimal bg) {return bg.setScale(2, BigDecimal.ROUND_CEILING);}/*** TODO 舍弃 ===> 直接舍弃指定位数后的小数 (FLOOR = 地板) ==> 直接舍弃指定位数后的小数*/public static BigDecimal parseDown(BigDecimal bg) {return bg.setScale(2, BigDecimal.ROUND_FLOOR);}/*** TODO 测试方法** @author ws* @mail 1720696548@qq.com* @date 2020/4/24 0024 17:17*/public static void main(String[] args) {//============================================== 加法 ==============================================================// 加法System.out.println("四舍五入 1.50 + 1.504 = " + parse(add(new BigDecimal("1.50"), new BigDecimal("1.504"))));System.out.println("四舍五入 1.50 + 1.505 = " + parse(add(new BigDecimal("1.50"), new BigDecimal("1.505"))));System.out.println("天花板 1.50 + 1.501 = " + parseUP(add(new BigDecimal("1.50"), new BigDecimal("1.501"))));System.out.println("地板 1.50 + 1.509 = " + parseDown(add(new BigDecimal("1.50"), new BigDecimal("1.509"))));//============================================== 减法 ==============================================================// 减法System.out.println("减法 =" + parse(subtract(new BigDecimal("100.09999999999998"), new BigDecimal("0.81"))));}
}
个人开源项目(通用后台管理系统)–> https://gitee.com/wslxm/spring-boot-plus2 , 喜欢的可以看看
本文到此结束,如果觉得有用,动动小手点赞或关注一下呗,将不定时持续更新更多的内容…,感谢大家的观看!
BigDecimal 计算工具类相关推荐
- 常用的数学计算工具类
package com.xutil.math;import java.math.BigDecimal;/*** @title 数学计算工具类* @author Xingbz* @createDate ...
- 基金里投资风险指标的计算工具类(夏普比率,波动率,Var值,最大回撤率)
去年在项目里写了一个计算投资风险指标的计算工具类,包含夏普比率,波动率,Var值,最大回撤率四个指标. 计算全部采用BigDecimal类型,开方计算采用牛顿迭代法计算. 其计算公式如下: 工具类实现 ...
- java 数学计算库_数学计算工具类
[java]代码库/** * Description: [数字计算工具类] * @version 1.0 */ public class MathUtils { /** 一百的常量 */ privat ...
- 方差计算工具类--Java版
方差的计算,如果不太计较精度的话,可以使用 Apache 的 commons-math3(http://commons.apache.org/proper/commons-math/)提供的 Vari ...
- RelativeDateFormat时间计算工具类
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/*** 时间计算工 ...
- java jexl 工具类_jexl表达式解析、计算工具类.md
jexl表达式解析.计算工具类.md 根据表达式可以动态反向解析出变量:适合动态表达式,参数未知场景 如 (A0.2+B0.8)/C 解析出 A\B\C,把ABC参数值代入计算 初始化引擎 priva ...
- java计算工作日_Java工作日计算工具类
工作日计算工具类 主要功能:传入两个日期,返回这两个日期之间有多少个工作日. 思路: 预先设置好一定年份范围内的节假日.补休到map里.(这里暂时只设置了2017 - 2018年的) 将这个年份范围内 ...
- Java 时间间隔计算工具类
Java 时间间隔计算工具类 一.工具类-DateIntervalUtil package com.example.demotest.util;import java.text.DecimalForm ...
- 计算车号Java,java停车收费计算工具类
停车收费计算工具类.收费标准:8时至22时,停车1小时内3元,超过1小时每延长1小时加收3元:11时至12时.16时30分至17时30分,停车30分钟内收1元,超过30分收3元:晚22时至次日8时,收 ...
最新文章
- Zabbix实现微信告警
- [原]软件设计的一些感悟
- fetch 自动加cookie_如何在shell中动态获取chrome浏览器的cookie信息
- 一年前端的迷惑,深度还是广度
- uigetfile命令的应用
- Spring IoC-02
- 给年轻工程师的十大忠告[转载]
- R-CNN学习笔记1:Selective Search for Object Recognition
- 去除vss源代码管理
- JQuery将用户输入的数字转换为大写
- pyhon3 爬取河海大学URP教务系统,爬取个人成绩,和本学期的成绩GPA,保存到excel
- 什么是ActiveRecord
- 万亿产业进化论,装备企业的机会在哪里?
- 译文:基于动态补偿的微型压电压力传感器冲击波高精度测试
- 漫画:什么是 “跳表” ?
- 【数据应用案例学习】(一)—— 基于用户画像的腾讯大数据防刷架构
- 计算机电池维修方案,解决方案:计算机主板电池已耗尽,如果不更换电池该怎么办?如何更换电池...
- 关于帐号因诱导关注违规进行粉丝删除的处理通知
- 常用的git命令(实用)
- 百万调音师—音频基础知识