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 计算工具类相关推荐

  1. 常用的数学计算工具类

    package com.xutil.math;import java.math.BigDecimal;/*** @title 数学计算工具类* @author Xingbz* @createDate ...

  2. 基金里投资风险指标的计算工具类(夏普比率,波动率,Var值,最大回撤率)

    去年在项目里写了一个计算投资风险指标的计算工具类,包含夏普比率,波动率,Var值,最大回撤率四个指标. 计算全部采用BigDecimal类型,开方计算采用牛顿迭代法计算. 其计算公式如下: 工具类实现 ...

  3. java 数学计算库_数学计算工具类

    [java]代码库/** * Description: [数字计算工具类] * @version 1.0 */ public class MathUtils { /** 一百的常量 */ privat ...

  4. 方差计算工具类--Java版

    方差的计算,如果不太计较精度的话,可以使用 Apache 的 commons-math3(http://commons.apache.org/proper/commons-math/)提供的 Vari ...

  5. RelativeDateFormat时间计算工具类

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/*** 时间计算工 ...

  6. java jexl 工具类_jexl表达式解析、计算工具类.md

    jexl表达式解析.计算工具类.md 根据表达式可以动态反向解析出变量:适合动态表达式,参数未知场景 如 (A0.2+B0.8)/C 解析出 A\B\C,把ABC参数值代入计算 初始化引擎 priva ...

  7. java计算工作日_Java工作日计算工具类

    工作日计算工具类 主要功能:传入两个日期,返回这两个日期之间有多少个工作日. 思路: 预先设置好一定年份范围内的节假日.补休到map里.(这里暂时只设置了2017 - 2018年的) 将这个年份范围内 ...

  8. Java 时间间隔计算工具类

    Java 时间间隔计算工具类 一.工具类-DateIntervalUtil package com.example.demotest.util;import java.text.DecimalForm ...

  9. 计算车号Java,java停车收费计算工具类

    停车收费计算工具类.收费标准:8时至22时,停车1小时内3元,超过1小时每延长1小时加收3元:11时至12时.16时30分至17时30分,停车30分钟内收1元,超过30分收3元:晚22时至次日8时,收 ...

最新文章

  1. Zabbix实现微信告警
  2. [原]软件设计的一些感悟
  3. fetch 自动加cookie_如何在shell中动态获取chrome浏览器的cookie信息
  4. 一年前端的迷惑,深度还是广度
  5. uigetfile命令的应用
  6. Spring IoC-02
  7. 给年轻工程师的十大忠告[转载]
  8. R-CNN学习笔记1:Selective Search for Object Recognition
  9. 去除vss源代码管理
  10. JQuery将用户输入的数字转换为大写
  11. pyhon3 爬取河海大学URP教务系统,爬取个人成绩,和本学期的成绩GPA,保存到excel
  12. 什么是ActiveRecord
  13. 万亿产业进化论,装备企业的机会在哪里?
  14. 译文:基于动态补偿的微型压电压力传感器冲击波高精度测试
  15. 漫画:什么是 “跳表” ?
  16. 【数据应用案例学习】(一)—— 基于用户画像的腾讯大数据防刷架构
  17. 计算机电池维修方案,解决方案:计算机主板电池已耗尽,如果不更换电池该怎么办?如何更换电池...
  18. 关于帐号因诱导关注违规进行粉丝删除的处理通知
  19. 常用的git命令(实用)
  20. 百万调音师—音频基础知识

热门文章

  1. java hashmap 遍历 for_Java中HashMap遍历
  2. 3D游戏建模零基础学习路线
  3. 对于客户的需求-我连对暗号的机会都没有
  4. electron笔记之问题记录
  5. python timedelta_python的timedelta
  6. 【测试】A/B 测试
  7. ncl显著性打点问题or画地图问题
  8. 【java】匿名内部类和多线程
  9. 单例设计模式在Spring中的应用
  10. Twitter推荐算法解读