BigInteger和BigDecimal

BigInteger和BigDecimal

  1. BigInteger适合保存比较大的整型(同时他的也就只能专用的加减乘除来操作,而且也是这个类型)
  2. BigDecimal适合保存精度更高的浮点型(小数)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package Learn;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;

public class Test {
public static void main(String[] args) {
BigInteger bigInteger=new BigInteger("654655646565154484846546546548");
BigInteger bigInteger1=new BigInteger("100");
System.out.println(bigInteger);
bigInteger1= bigInteger1.add(bigInteger);
System.out.println(bigInteger1);

BigDecimal bigDecimal=new BigDecimal("1.256465156165484986465165");
BigDecimal bigDecimal1=new BigDecimal("1.2564651561654849");
System.out.println(bigDecimal);
bigDecimal= bigDecimal.add(bigDecimal1);
System.out.println(bigDecimal);
}
}


image-20220420161941537

应用

在实际应用中double类型进行相加减,会存在精度的问题,比如image-20220420162048073

此时我们就需要运行BigDecimal来进行运算

1
2
3
4
5
6
7
8
9
private Double xj;

public Double getXj() {
BigDecimal bigDecimalPrice=new BigDecimal(""+getBook().getPrice());
BigDecimal bigDecimalBuyCount=new BigDecimal(""+getBuyCount());
BigDecimal bigDecimalxj=bigDecimalPrice.multiply(bigDecimalBuyCount);
xj=bigDecimalxj.doubleValue();
return xj;
}

image-20220420163718264