首页 > 数据库 >Java的BigDecimal与数据库的Decimal的应用

Java的BigDecimal与数据库的Decimal的应用

时间:2024-06-08 17:29:35浏览次数:23  
标签:Java BigDecimal Decimal add thisMonthIncome 为空 null 运算

数据库方面

Decimal的语法

DECIMAL(M, D)

  • M:总位数,包括小数点前和小数点后的数字。
  • D:小数点后的位数。
Decimal的实际应用场景

货币计算、精度计算

Java代码方面

  • add(BigDecimal augend):加法运算
  •  //本月总计 == 本月拓客 + 本月服务 + 行动长计划
            //BigDecimal thisMonthIncome = thisMonthTurk.add(thisMonthService).add(cooperation);
            // 非空检查并进行加法运算
            BigDecimal thisMonthIncome = BigDecimal.ZERO;
            if (thisMonthTurk != null) {
                thisMonthIncome = thisMonthIncome.add(thisMonthTurk);
            }
            if (thisMonthService != null) {
                thisMonthIncome = thisMonthIncome.add(thisMonthService);
            }
            if (cooperation != null) {
                thisMonthIncome = thisMonthIncome.add(cooperation);
            }
            log.info("本月总计:{}", thisMonthIncome);

  • subtract(BigDecimal subtrahend):减法运算
  • multiply(BigDecimal multiplicand):乘法运算
  • divide(BigDecimal divisor, int scale, RoundingMode roundingMode):除法运算,可以指定小数位数和舍入方式
  • setScale(int newScale, RoundingMode roundingMode):设置小数位数和舍入方式
  • compareTo(BigDecimal val):比较两个BigDecimal的大小
  • toString():将BigDecimal转换为字符串

注意事项

在BigDecimal类中,以下方法中的参数不能为空:

  • add(BigDecimal augend):加法运算的参数augend不能为空,即不能为null。
  • subtract(BigDecimal subtrahend):减法运算的参数subtrahend不能为空,即不能为null。
  • multiply(BigDecimal multiplicand):乘法运算的参数multiplicand不能为空,即不能为null。
  • divide(BigDecimal divisor, int scale, RoundingMode roundingMode):除法运算的参数divisor不能为空,即不能为null。
  • compareTo(BigDecimal val):比较大小的参数val不能为空,即不能为null。

这些方法在接收到null参数时,会抛出NullPointerException异常。因此,在使用这些方法时,需要确保传入的参数不为null,或者在调用这些方法之前进行非空检查

 

标签:Java,BigDecimal,Decimal,add,thisMonthIncome,为空,null,运算
From: https://blog.csdn.net/weixin_49423223/article/details/139548004

相关文章

  • 另一个Java基于阻塞的定时消费内存队列(依赖guava)
    本文的代码是对一个Java基于阻塞的定时消费内存队列-Jackie_JK-博客园(cnblogs.com)方法的改进,完善了包装以及部分细节,非jdk21可能需要更换线程池类型。消费类型:@Getter@AllArgsConstructorpublicenumPushType{ELASTIC,SQL,;}队列参数枚举:@Getter@AllAr......
  • java小记
    今天学了一些计算机存储数据的原理:文本,图片,声音等存储编码:gb2312,Unicode,gbk等等。数据类型相关遇到了一些问题:解决办法大概是:但是对于我来说是无效的,最后还是照着下面来:成功......
  • 【Selenium+java环境配置】(超详细教程常见问题解决)
    Selenium+java环境配置windows电脑环境搭建-chrome浏览器1.下载chrome浏览器2.查看chrome浏览器版本3.下载chrome浏览器驱动4.配置系统环境变量PATH验证环境是否搭建成功1.创建java项目,添加pom文件中添加依赖2.编写代码运行常见问题&解决办法1.访问失败Theversio......
  • Java---异常【详细】
     1.异常的简介1.编译错误:基本语法错误,编译器进行语法检查,如果没有通过,程序违背了计算机编程语言的语法。2.运行错误:程序可以执行,在执行过程中发生异常,导致程序提前退出,没有得到预计的执行效果。3.逻辑错误:程序可能执行,结果不对。4.异常体系,保证程序的健壮性。2.java异......
  • 宝塔搭建javaweb_宝塔工具+javaweb+mysql+tomcat部署项目
    1.首先我们得有一个安装了宝塔工具的云服务器首先我们要在服务器安全组开放宝塔常用的端口,看你是什么服务器,然后对应下面官网的教程就行了。腾讯云:https://www.bt.cn/bbs/thread-1229-1-1.html阿里云:https://www.bt.cn/bbs/thread-2897-1-1.html华为云:https://www.bt.cn/bbs/t......
  • 宝塔搭建javaweb_宝塔工具+javaweb+mysql+tomcat部署项目
    1.首先我们得有一个安装了宝塔工具的云服务器首先我们要在服务器安全组开放宝塔常用的端口,看你是什么服务器,然后对应下面官网的教程就行了。腾讯云:https://www.bt.cn/bbs/thread-1229-1-1.html阿里云:https://www.bt.cn/bbs/thread-2897-1-1.html华为云:https://www.bt.cn/bbs/t......
  • Java——数组排序
     一、排序介绍1、排序的概念排序是将多个数据按照指定的顺序进行排列的过程。2、排序的种类排序可以分为两大类:内部排序和外部排序。3、内部排序和外部排序1)内部排序内部排序是指数据在内存中进行排序,适用于数据量较小的情况。数据可以完全装入内存。常见的内部排序算......
  • Java 集合
    ListArrayList和LinkedList有什么区别?数据结构不同,ArrayList基于数组实现,LinkedList基于双向链表实现使用场景不同,ArrayList用于查多写少的场景,LinkedList多用于写多查少的场景查询:ArrayList支持随机访问,可以通过下标直接获取元素,时间复杂度是O(1)LinkedList需要遍历链表......
  • 【计算机毕业设计】springboot287基于javaEE的校园二手书交易平台的设计与实现
    信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容......
  • java面试题及答案2024,java2024最新面试题及答案(之一)
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~本套Java面试题大全,全的不能再全,哈哈~一、Java基础1.JDK和JRE有什么区别?JDK:JavaDevelopmentKit的简称,java开发工具包,提供了java的开发环境和运行环境。JR......