BigInteger类
BigInteger适合保存比较大的整型
当在编程中遇到需要保存一个特别大的数字,比如地球的人口。
这时如果用long类型保存可能都不够了,此时就需要用到BigInteger
- BigInteger不能直接±*/
- add()加
- subtract()减
- multiply()乘
- divide()除
使用演示:
public class test2 {
public static void main(String[] args) {
BigInteger bigInteger = new BigInteger("999999999999999999999999999999999999");
BigInteger big2 = new BigInteger("1");
//加
BigInteger add = bigInteger.add(big2);
System.out.println(add);
//减
BigInteger subtract = bigInteger.subtract(big2);
System.out.println(subtract);
//乘
BigInteger multiply = bigInteger.multiply(big2);
System.out.println(multiply);
//除
BigInteger divide = bigInteger.divide(big2);
System.out.println(divide);
}
}
BigDecimal类
BigDecimal类用于保存精度需求很高的浮点类型(小数),比如天文运算,银行,
在使用double类型保存时,小数超过一定长度就会损失精度
double num = 902.1234567891112222333444555666;
System.out.println(num);
运行结果是:
902.1234567891112
很明显后面的精度直接没了,此时就需要用到BigDecimal保存
BigDecimal和BigInteger一样不能直接加减乘除,同样是使用方法
使用演示:
public class test2 {
public static void main(String[] args) {
BigDecimal bigDecimalr = new BigDecimal("902.1234567891112222333444555666");
BigDecimal big2 = new BigDecimal("1.1");
//加
BigDecimal add = bigDecimalr.add(big2);
System.out.println(add);
//减
BigDecimal subtract = bigDecimalr.subtract(big2);
System.out.println(subtract);
//乘
BigDecimal multiply = bigDecimalr.multiply(big2);
System.out.println(multiply);
//除
//BigDecimal divide = bigDecimalr.divide(big2);
//System.out.println(divide);
}
}
注意点:在精度很高的除法运算中,很可能会得到无限小数,比如上面的数除以1.1
而导致报异常,所以需要我们处理一下
public class test2 {
public static void main(String[] args) {
BigDecimal bigDecimalr = new BigDecimal("902.12");
BigDecimal big2 = new BigDecimal("1.1");
//除
BigDecimal divide = bigDecimalr.divide(big2,BigDecimal.ROUND_CEILING);
System.out.println(divide);
}
}
ROUND_CEILING表示将结果限制到被除数的小数精度长度,比如上面的被除数是902.12,只有两位小数,那么除1.1后得到的结果也是保留两位小数。