首页 > 其他分享 >BigDecimalUtil 工具类

BigDecimalUtil 工具类

时间:2023-12-27 10:45:06浏览次数:22  
标签:value BigDecimal Object ret objectToBigDecimal BigDecimalUtil 工具 public

package com.yintn.cbms.basicinfo.api.utils;

import lombok.experimental.UtilityClass;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.util.Optional;

@UtilityClass
public class BigDecimalUtil {

    public BigDecimal add(Object i, Object j) {
        return objectToBigDecimal(i).add(objectToBigDecimal(j));
    }

    public BigDecimal subtract(Object i, Object j) {
        return objectToBigDecimal(i).subtract(objectToBigDecimal(j));
    }

    public BigDecimal multiply(Object i, Object j) {
        return objectToBigDecimal(i).multiply(objectToBigDecimal(j));
    }

    public BigDecimal divide(Object i, Object j) {
        return objectToBigDecimal(i).divide(objectToBigDecimal(j),2, RoundingMode.HALF_UP);
    }

    public BigDecimal objectToBigDecimal(Object value) {
        BigDecimal ret = null;
        if (value != null) {
            if (value instanceof BigDecimal) {
                ret = (BigDecimal) value;
            } else if (value instanceof String) {
                ret = new BigDecimal((String) value);
            } else if (value instanceof BigInteger) {
                ret = new BigDecimal((BigInteger) value);
            } else if (value instanceof Number) {
                ret = BigDecimal.valueOf(((Number) value).doubleValue());
            } else {
                throw new ClassCastException("Not possible to coerce [" + value + "] from class " + value.getClass() + " into a BigDecimal.");
            }
        }
        if (ret != null) {
            ret = ret.setScale(2);
        }
        return ret;
    }

    public BigDecimal objectToBigDecimal1(Object object){
        Object o = Optional.ofNullable(object).orElse(BigDecimal.ZERO);
        return new BigDecimal(String.valueOf(o));
    }
}

 

标签:value,BigDecimal,Object,ret,objectToBigDecimal,BigDecimalUtil,工具,public
From: https://www.cnblogs.com/chenTo/p/17930015.html

相关文章

  • 哪些数据分析工具很受欢迎?
    ......
  • “自适应特征强化与转导信息最大化的iDNA-ABT深度学习模型:新一代DNA甲基化检测工具”
    iDNA-ABT:advanceddeeplearningmodelfordetectingDNAmethylationwithadaptivefeaturesandtransductiveinformationmaximization会议地点:腾讯会议关键词:作者:期刊:Bioinformatics年份:2022论文原文:补充材料:报告人博客链接:https://blog.csdn.net/qq_48480183/article/de......
  • TDD的工具与技术:了解常用的测试驱动开发工具
    1.背景介绍测试驱动开发(Test-DrivenDevelopment,TDD)是一种软件开发方法,它鼓励开发人员在编写代码之前先编写测试用例。这种方法的目的是通过确保代码的每个部分都有相应的测试用例,从而提高代码质量和可维护性。在过去的几年里,TDD已经成为许多软件开发团队的标准工作流程。在本文中,......
  • ai 图片消除工具, lama-cleaner,安装
    如何使用这是一款开源工具,访问以下网页可供体验。https://huggingface.co/spaces/Sanster/Lama-Cleaner-lama如果你打不开上方的网址,可以尝试自行在电脑上部署。本机部署此功能安装python并确保python被加入到环境变量这一步不多讲解,关于python的安装网络上有特别多文字和......
  • Typora1.7.6永久激活工具下载
    Typora下载安装前往官网下载typora的1.7.6版本选择为所有用户下载选择安装路径创建桌面快捷方式开始下载下载完成后启动在typora启动页选择以后再说,有的第一次下载可能会显示试用,直接点击试用就行然后手动将typora关闭激活工具下载Typora1.7.6永久激活工具下载Typora激活激活工具下......
  • Java 日期转换运算工具类
    ​  参考文档:Java日期转换运算工具类-CJavaPy1、Date常用方法java.util.Date 是Java中表示日期和时间的一个基础类。但随着时间的推移,许多其方法被标记为过时,并被推荐在Java8引入的 java.time 包中的新类替代。但是,Date仍然在很多旧的代码库中广泛使用,并在与某......
  • 绝了!这可能是当前最适合打工人体质的免费AI工具
    朋友们别卷了,我翻遍了全网,终于找到了最适合打工人学生党的AI神器各个AI功能都有,比如ChatGPT4,小红书文案生成,AI面具,模拟面试都能支持更重要的是:✅免费!✅无需魔法!!✅无需安装!!!呜呜~由于新公司对软件安装很严格,作为一个ChatGPT重度用户,我一直在寻找一个......
  • API文档生成!超好用API调试工具
    在数字化时代,API已经成为了应用程序之间进行通信的关键桥梁。随着API的普及和复杂性的增加,API研发和管理也面临着越来越多的挑战。为了更好地应对这些挑战,Apipost提供了一整套API研发工具,包括API设计、API调试、API文档和API自动化测试等功能。本文将深入介绍Apipost的优势和特点,助......
  • 排查java代码慢-arthas工具
    1.下载地址,arthas(gitee.io)2.下载的是一个zip包 3.上传到服务器任意位置,解压 4.查看java进程ps-ef|grep进程名称显示结果的进程号是:1098156.cd到arthas根目录,执行命令java-jararthas-boot.jar109815启动成功如下:注意:如果是用systemctl启动的,注意下......
  • API文档生成!超好用API调试工具
    在数字化时代,API已经成为了应用程序之间进行通信的关键桥梁。随着API的普及和复杂性的增加,API研发和管理也面临着越来越多的挑战。为了更好地应对这些挑战,Apipost提供了一整套API研发工具,包括API设计、API调试、API文档和API自动化测试等功能。本文将深入介绍Apipost的优势和特点,......