BigDecimal的相关使用

简介: BigDecimal的相关使用

bigDecimal的相关运算:加减乘除

bigDecimal的运算需要调用方法;

加法运算:

bignum1.add(bignum2)

减法运算:

bignum1.subtract(bignum2)

乘法运算:

bignum1.multiply(bignum2)

除法运算:

bignum1.divide(bignum2)

注意: 在使用以上方法时,bignum1和bignum2均不能为null,否则会报空指针异常。

示例代码如下:

public static void main(String[] args)throws Exception {
   BigDecimal bignum1 = new BigDecimal("10");
   BigDecimal bignum2 = new BigDecimal("5");
   BigDecimal bignum3 = null;
   //加法
   bignum3 =  bignum1.add(bignum2);
   System.out.println("求和:" + bignum3);
   //减法
   bignum3 = bignum1.subtract(bignum2);
   System.out.println("求差:" + bignum3);
   //乘法
   bignum3 = bignum1.multiply(bignum2);
   System.out.println("乘法积:" + bignum3);
   //除法
   bignum3 = bignum1.divide(bignum2);
   System.out.println("除法结果:" + bignum3);
}

运行结果如下:

求和:15

求差:5

乘法积:50

除法结果:2

为什么要用BigDecimal?

为什么要用BigDecimal呢,这里存在的一个很大的问题就是精度问题,因为在Java中的浮点数据类型,比如float,或者是double,都会在高精度运算中丢失精度;从而导致数据计算不准确。

尤其是涉及到银行、金额等业务时,一个不小心就会导致灾难式的问题产生。

所以,在不能使用float和double,我们就会去使用不会丢失精度的BigDecimal。

BigDecimal的其他功能

BigDecimal中也提供了小数的四舍五入等方法,并且在保留小数的方法中也有几个可选项。

如下示例代码,大家可以运行一下试试。

public static void main(String[] args) throws Exception {
      BigDecimal b = new BigDecimal("1.125");
      //表示保留一位小数,默认用四舍五入方式。
      double result1 = b.setScale(1).doubleValue();
      System.out.println("默认用四舍五入方法" + result1);
      //直接删除多余的小数位。如2.35会变成2.3;
      double result2 = b.setScale(1, BigDecimal.ROUND_DOWN).doubleValue();
      System.out.println("删除多余的小数位:" + result2);
      //进位处理,2.35变成2.4
      double result3 = b.setScale(1, BigDecimal.ROUND_UP).doubleValue();
      System.out.println("直接进一" + result3);
      //四舍五入,2.35变成2.4
      double result4 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
      System.out.println("四舍五入的值:" + result4);
      //四舍五入,2.35变成2.3,如果是5则向下舍
      double result5 = b.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue();
      System.out.println("四舍六入的值:" + result5);
  }
目录
相关文章
|
数据采集 存储 大数据
数据治理:数据孤岛是企业信息化发展中难以避免的阶段
数据孤岛是企业信息化发展中难以避免的阶段。企业需要正视这一现象,通过完善数据治理体系、加强部门协作、采用先进技术手段等措施,逐步消除数据孤岛,实现数据的有效整合和利用。只有这样,企业才能在激烈的市场竞争中立于不败之地。
1010 0
|
SQL 分布式计算 大数据
SparkSQL中产生笛卡尔积的几种典型场景以及处理策略
本文介绍都有哪些情况会产生笛卡尔积,以及如何事前"预测"写的SQL会产生笛卡尔积从而避免
5112 57
SparkSQL中产生笛卡尔积的几种典型场景以及处理策略
|
存储 小程序 编译器
理解整型在内存中的存储
理解整型在内存中的存储
177 0
理解整型在内存中的存储
|
Windows
Windows系统 winver命令详解,Windows系统使用命令行查看系统版本
第一步、打开cmd 按下 win 键,输入 cmd 后回车,打开「命令提示符」
1244 0
Windows系统 winver命令详解,Windows系统使用命令行查看系统版本
|
5天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
395 93
|
6天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
6天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
395 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%