BigInteger
用来处理大数据
public void test(){
long sum = 1;
for(int i = 1; i <= 21; i++){
sum *= i;
}
System.out.println(sum);
}
输出结果:-4249290049419214848
因为已经超出了long允许的范围
这种情况就要使用BigInteger,他是java.math包下的一个类
public void test(){
BigInteger sum = BigInteger.valueOf(1);
for(int i = 1; i<=21; i++){
BigInteger bi = BigInteger.valueOf(i);
sum = sum.multiply(bi);
}
System.out.println(sum);
}
输出结果:51090942171709440000
BigDecimal
处理二进制运算导致的误差
public void test(){
System.out.println(2.0 - 1.1);
}
输出结果:0.8999999999999999
如果要解决这种问题,就要用到BigDecimal类,它是java.math 包下的一个类
public void test(){
BigDecimal b1 = new BigDecimal("2.0");//创建BigDecimal对象时,必须使用String构造器
BigDecimal b2 = new BigDecimal("1.1");
BigDecimal b3 = b1.subtract(b2);
System.out.println(b3);
}
输出结果:0.9