1、BigDecimal是什么

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。

2、构造器描述

BigDecimal(int) 创建一个具有参数所指定整数值的对象。
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。 //不推荐使用
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。//推荐使用

3、方法描述

add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。
subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。
multiply(BigDecimal) BigDecimal对象中的值相乘,然后返回这个对象。
divide(BigDecimal) BigDecimal对象中的值相除,然后返回这个对象。
toString() 将BigDecimal对象的数值转换成字符串。
doubleValue() 将BigDecimal对象中的值以双精度数返回。
floatValue() 将BigDecimal对象中的值以单精度数返回。
longValue() 将BigDecimal对象中的值以长整数返回。
intValue() 将BigDecimal对象中的值以整数返回。

二、具体用法

1、 BigDecimal加减乘除

  1. BigDecimal bignum1 = new BigDecimal(“10”);
  2. BigDecimal bignum2 = new BigDecimal(“5”);
  3. BigDecimal bignum3 = null;
  4. //加法
  5. bignum3 = bignum1.add(bignum2);
  6. System.out.println(“和 是:” + bignum3);
  7. //减法
  8. bignum3 = bignum1.subtract(bignum2);
  9. System.out.println(“差 是:” + bignum3);
  10. //乘法
  11. bignum3 = bignum1.multiply(bignum2);
  12. System.out.println(“积 是:” + bignum3);
  13. //除法
  14. bignum3 = bignum1.divide(bignum2);
  15. System.out.println(“商 是:” + bignum3);

2、BigDecimal 比较大小

  1. BigDecimal a = new BigDecimal (888);
  2. BigDecimal b = new BigDecimal (666);
  3. //使用compareTo方法比较
  4. //注意:a、b均不能为null,否则会报空指针
  5. if(a.compareTo(b) == -1){
  6. System.out.println(“a小于b”);
  7. }
  8. if(a.compareTo(b) == 0){
  9. System.out.println(“a等于b”);
  10. }
  11. if(a.compareTo(b) == 1){
  12. System.out.println(“a大于b”);
  13. }
  14. if(a.compareTo(b) > -1){
  15. System.out.println(“a大于等于b”);
  16. }
  17. if(a.compareTo(b) < 1){
  18. System.out.println(“a小于等于b”);
  19. }

[

](https://blog.csdn.net/weixin_48027611/article/details/107039871)
原文链接:https://blog.csdn.net/weixin_48027611/article/details/107039871