JavaAPI_常用类3
1.BigInteger类
java.math.BigInteger 类:不可变的任意精度整数。
BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息。
public static void main(String[] args) {
/*
BigInteger类 不可变的任意精度整数。
*/
BigInteger a = new BigInteger("111111111111111111111111111111111111111111111");
System.out.println(a);
BigInteger b = new BigInteger("11111111111111111111111111111111111111111111111");
BigInteger c = a.add(b);//加, a.add(b)是一个新的 BigInteger对象
System.out.println(c);
System.out.println(a);
System.out.println(b);
System.out.println(a.subtract(b));//减
System.out.println(a.multiply(b));//乘
System.out.println(a.divide(b));//除
}
2.BigDecimal类
java.math.BigDecimal类:不变的,任意精度的带符号的十进制数字。
在计算机中不论是float还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。
根本原因是:十进制值通常没有完全相同的二进制表现形式;十进制数的二进制表现形式可能不精确。只能无限接近于那个值。
double a = 1.0-0.9;
System.out.println(a);//0.09999999999999998
double b = 0.8-0.7;
System.out.println(b);//0.10000000000000009
System.out.println(a==b);//false
所以,Java在java.math包中提供的API类BigDecimal。
public static void main(String[] args) {
/*
BigDecimal类 不变的,任意精度的带符号的十进制数字。
*/
System.out.println(10.9-10.8 );//0.09999999999999964
System.out.println(10.9-10.8 == 0.1);//false
BigDecimal b1 = new BigDecimal("10");
System.out.println(b1);
BigDecimal b2 = new BigDecimal("3");
// BigDecimal.ROUND_CEILING 圆形模式向正无穷大转弯。
// System.out.println(b1.divide(b2));
System.out.println(b1.divide(b2,15,BigDecimal.ROUND_CEILING));// 3.333333333333334
// BigDecimal.ROUND_FLOOR 舍入模式向负无穷大转弯。
System.out.println(b1.divide(b2,6,BigDecimal.ROUND_FLOOR));// 3.333333
}