1、基本介绍
在JAVA中, Integer
是 int
的包装类。一个 Integer
类型占 4 字节,一个字节占 8 bit,因此一个 Integer
总共占 32 bit。去除第一位的符号位,剩下 31 位来表示数值。
所以Integer
的表示范围最小值为 -2^31,最大值为 2^31-1。
Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BigInteger 类和 java.math.BigDecimal 类,用于高精度计算。
其中 BigInteger
类是针对大整数的处理类,而 BigDecimal
类则是针对大小数的处理类。BigDecimal
类的实现用到了 BigInteger
类,不同的是 BigDecimal
加入了小数的概念。
2、BigInteger
2.1 创建BigInteger类型数据
① nextBigInteger方式——从控制台读入一个BigInteger型数据
Scanner scanner = new Scanner(System.in);
//1.创建BigInteger类型的数据
BigInteger data = scanner.nextBigInteger();
② new BigInteger(String val)方式——将十进制字符串表示形式转换为BigInteger
BigInteger data = new BigInteger("1111");
③ new BigInteger(String val,int radix)——将 radix
进制的数据转化为十进制的BigInteger类型的数据
BigInteger data3 = new BigInteger("1111",2);
②和③其实一样,不指定 radix
则默认是十进制。
2.2 BigInteger类型运算
返回值为BigInteger类型:add(),subtract(),multiply(),divide(),mod(),remainder(),pow(),abs(),negate();
BigInteger a = new BigInteger("13");
BigInteger b = new BigInteger("4");
int n = 3;
//1.加
BigInteger bigNum1 = a.add(b); //17
//2.减
BigInteger bigNum2 = a.subtract(b); //9
//3.乘
BigInteger bigNum3 = a.multiply(b); //52
//4.除
BigInteger bigNum4 = a.divide(b); //3
//5.取模(需 b > 0,否则出现异常:ArithmeticException("BigInteger: modulus not positive"))
BigInteger bigNum5 = a.mod(b); //1
//6.求余
BigInteger bigNum6 = a.remainder(b); //1
//7.平方(需 n >= 0,否则出现异常:ArithmeticException("Negative exponent"))
BigInteger bigNum7 = a.pow(n); //2197
//8.取绝对值
BigInteger bigNum8 = a.abs(); //13
//9.取相反数
BigInteger bigNum9 = a.negate(); //-13
2.3 BigInteger类型常量
//0
BigInteger zero = BigInteger.ZERO;
//1
BigInteger one = BigInteger.ONE;
//10
BigInteger ten = BigInteger.TEN;
2.4 比较BigInteger类型数据的大小
① 比较大小:int compareTo(BigInteger val)
返回值:1:this大于val;0:等于;-1:this小于val
② 获取较大值:BigInteger max(BigInteger val)
返回较大的值
③ 获取较小值:BigInteger min(BigInteger val)
返回较小的值
3、BigDecimal
3.1 创建BigDecimal类型数据
BigDecimal(double d) 创建一个具有参数所指定双精度值的对象。 【不推荐使用】
BigDecimal(String s) 创建一个具有参数所指定以字符串表示的数值的对象。【推荐使用】
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(int) 创建一个具有参数所指定整数值的对象。
注意:double 参数的构造方法不推荐使用,因为它不能精确的得到相应的值
3.2 BigDecimal对象的常用方法
1.BigDecimal add(BigDecimal value):加法,求两个BigDecimal类型数据的和。
2.BigDecimal subtract(BigDecimal value):减法,求两个BigDecimal类型数据的差。
3.BigDecimal multiply(BigDecimal value):乘法,求两个BigDecimal类型数据的积。
4.BigDecimal divide(BigDecimal divisor):除法,求两个BigDecimal类型数据的商。
5.BigDecimal remainder(BigDecimal divisor):求余数,求BigDecimal类型数据除以divisor的余数。
6.BigDecimal max(BigDecimal value):最大数,求两个BigDecimal类型数据的最大值。
7.BigDecimal min(BigDecimal value):最小数,求两个BigDecimal类型数据的最小值。
8.BigDecimal abs():绝对值,求BigDecimal类型数据的绝对值。
9.BigDecimal negate():相反数,求BigDecimal类型数据的相反数。
其中除法 divide
有三个参数的方法,第一参数表示除数,第二个参数表示小数点后保留位数,第三个参数表示取舍规则,详情参考:https://blog.csdn.net/qq_37080455/article/details/98964856
4、两者之间的转换
BigInteger
转 BigDecimal
BigDecimal bigDecimal = new BigDecimal(bigInteger)
5、参考博客
https://blog.csdn.net/qq_37080455/article/details/98964856
https://blog.csdn.net/qq_44366571/article/details/115584732
https://blog.csdn.net/weixin_44259720/article/details/87002816