文章目录
- 关于BigInteger类
- BigInteger的构造方法
- BigInteger方法使用示例
- 算术运算API
- 转换为基本数据类型的方法
- 小结
关于BigInteger类
BigInteger类是用于解决整型类型(含基本数据类型及对应的包装类)无法表示特别大的数组及运算问题。
- 即使是占用字节数最多的整型long,能表示的范围也是有限的,为-9223372036854775808 ~ 9223372036854775807。以上数字的长度为19位
- 理论上,你可以使用BigInteger表示任意整数
- 它肯定支持
-2的Integer.MAX_VALUE次方 至 2的Integer.MAX_VALUE次方
,甚至更大的范围 - Integer.MAX_VALUE :2147483647
- 它肯定支持
官方文档解释“:
BigInteger must support values in the range -2^Integer.MAX VA (exclusive) to +2^Integer.max VAUB(exclusive) and may support values outside of that range.
BigInteger的构造方法
红色方框里的意思表示,可以传入字符串。
所以当有特别大的数字时可以用字符串表示一个很长的数,用这个方法可以吧字符串转为数字
BigInteger方法使用示例
- 不可以使用运算符号处理BigInteger的运算
- 本质上通过BigInteger类创建出来的是一个个对象,而不是数字
- 你必须通过BigInteger提供的APi实现你所需要的运算
public class BigInteger {
public static void main(String[] args) {
//随便来设置一个很大的数,
String value1 = "777777777776666666665555555555444444444333333333222222222111111111";
String value2 = "111111111112222222223333333333444444444555555555666666666777777777";
java.math.BigInteger number1 = new java.math.BigInteger(value1);
java.math.BigInteger number2 = new java.math.BigInteger(value2);
System.out.println("1转换后:"+number1);
System.out.println("2转换后:"+number2);
java.math.BigInteger result;
result = number1.add(number2);//加法运算
System.out.println(result);
result = number1.subtract(number2);//减法运算
System.out.println(result);
result = number1.multiply(number2);//乘法
System.out.println(result);
result = number1.divide(number2);//除法运算
System.out.println(result);
}
}
算术运算API
idea里查看BigInteger的API方法。
转换为基本数据类型的方法
小结
- 使用Biglnteger可以表示非常大的整数;
- Biglnteger的构造方法重载了好几次,推荐使用String作为参数的那个
- 当需要进行算术运算时,必须使用Biglnteger提供的API
- Biginteger的API几乎包括了你所能想到的所有数值操作:
- 你可以将Biglnteger转换成任何基本数据类型,但可能丢失精度。
- 在转换之前,应先明确是否可能丢失精度
- 你不一定需要将结果转换为数值型,使用字符串也可以用于显示或存储