BigDecimal类 大小数
对小数做精确计算时,double不能描述的时候,就要使用这个类BigDecimal对小数做精确计算
package day26;
import java.math.BigDecimal;
public class Demo01 {
public static void main(String[] args){
BigDecimal d1 = new BigDecimal("0.9999999999999999999999999999999999999999999999999999999999999999999999");
BigDecimal d2 = new BigDecimal("0.0000000000000000000000000000000000000000000000000000000000000000000001");
d1 = new BigDecimal("0.9999999999999999999999999999999999999999999999999999999999999999999999");
d2 = new BigDecimal("0.0000000000000000000000000000000000000000000000000000000000000000000001");
BigDecimal d3 = d1.add(d2);//+
System.out.println(d3);
d1 = new BigDecimal("0.9999999999999999999999999999999999999999999999999999999999999999999999");
d2 = new BigDecimal("0.0000000000000000000000000000000000000000000000000000000000000000000001");
d3 = d1.subtract(d2);//-
System.out.println(d3);
d1 = new BigDecimal("0.9999999999999999999999999999999999999999999999999999999999999999999999");
d2 = new BigDecimal("0.0000000000000000000000000000000000000000000000000000000000000000000001");
d3 = d1.multiply(d2);//*
System.out.println(d3);
d1 = new BigDecimal("0.9999999999999999999999999999999999999999999999999999999999999999999999");
d2 = new BigDecimal("0.0000000000000000000000000000000000000000000000000000000000000000000001");
d3 = d1.divide(d2);//÷
System.out.println(d3);
d1 = new BigDecimal("10");
d2 = new BigDecimal("3");
// 10÷3 保留8位 四舍五入
d3 = d1.divide(d2,8,BigDecimal.ROUND_HALF_UP);//÷
System.out.println(d3);
}
}
BigInteger
保存更长的整数,取值范围受内存限制,在long 不能满足的时候使用BigInteger
package day26;
import java.math.BigInteger;
public class Demo02 {
public static void main(String[] args){
int sum = 1;
for(int i = 1;i<=200;i++){
sum *=i;
}
System.out.println(sum);
//BigInteger bSum = new BigInteger(1);
BigInteger bSum = BigInteger.valueOf(1);
for(int i = 1; i<=999;i++){
bSum =bSum.multiply(BigInteger.valueOf(i));
}
System.out.println(bSum);
}
}