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);
  }
目录
相关文章
|
Java API
BigDecimal类型讲解
如何在Java中使用BigDecimal数字类型,你真的掌握了嘛??
120 0
|
2月前
|
Java
BigInteger和BigDecimal18
BigInteger和BigDecimal18
39 3
|
5月前
|
Java
bigdecimal加减乘除
bigdecimal加减乘除
|
6月前
|
存储 Java
BigDecimal 详解
BigDecimal 详解
102 8
|
Java API
关于BigDecimal你不知道的那些事儿
在我们平时开发中,涉及到精度计算的逻辑肯定会用到BigDecimal,Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作。 ————————————————
63 0
关于BigDecimal你不知道的那些事儿
|
6月前
|
Java API
使用 BigDecimal 的正确方式
使用 BigDecimal 的正确方式
70 1
|
存储 Java
BigInteger与BigDecimal类
BigInteger与BigDecimal类
82 0
|
缓存 安全 Java
BigDecimal
BigDecimal
3151 3
|
Java
BigDecimal详解和精度问题
BigDecimal详解和精度问题
133 0