BigInteger
概述
1.在java中,有许多处理数字的类,比如说Integer类,但是Integer类却有着一定的局限性。
2. 我们都知道Integer是Int型的包装类,int的表数范围是 -2^31 ~ 2^31-1 。若是我们在显示生活中要描述更大的整数类型时,使用Integer数据类型就无法实现了,所以Java中为我们提供了BigInteger类。
3. BigInteger类型的表数范围较Integer,Long类型的数字范围要大的多。它支持任意精度的整数运算,也就是说在运算中BigInteger类型可以准确地表示任何大小的整数值而不会丢失任何信息。
4. BigInteger提供了所有Java的原始整数运算符和java.lang.Math中所有相关方法的类比。
5. 不可变的任意精度整数。
6. BigInteger的精确计算和庞大容量是因为它的底层是依靠字符串来进行的。
7. BigInteger也被人们亲切的称作大整数,而它的运算就是程序员经常说的大整数运算。
BIgInteger类的常用方法
方法名 | 功能 |
---|---|
BIgInteger(String val) | 构造方法,将十进制字符串转换为BIgInteger |
BigInteger(byte[] val) | 构造方法,将包含二进制补码二进制表达式的字节数组转换为BigInteger |
compareTo() | 比较运算,==返回0 >返回1 <返回-1 |
BigInteger.valueOf() | 将long型转化为BigInteger,也就是返回一个等于long的BigInteger数 |
add() | 加法 |
subtract() | 减法 |
multiply() | 乘法 |
divide() | 除法 |
remainder() | 取余 |
abs() | 求绝对值 |
negate() | 取反 |
pow() | 求幂 |
doubleValue() | 将BigInteger转化为double型 |
floatvalue() | 将BigInteger转化为float型 |
toString() | 返回一个字符串 |
代码示例
import java.math.BigInteger;
public class BIgIntegerDemo {
public static void main(String[] args) {
//构造方法
String str = "123456789876543212345678765432123456";
byte [] bytes = {1,11,41,32,41,};
System.out.println(new BigInteger(bytes));//4482211881
System.out.println(new BigInteger(str));//123456789876543212345678765432123456
//创建BigInteger
BigInteger a = new BigInteger("123");
//valueOf 将long型转化为BigInteger,也就是返回一个等于long的BigInteger数
BigInteger b = BigInteger.valueOf(1234567899876543234l);
//比较运算 compareTo() ==返回0 >返回1 <返回-1
BigInteger data1 = new BigInteger("123456");
BigInteger data2 = new BigInteger("123455");
System.out.println(data1.compareTo(data2));//1
//add() 加法
System.out.println(data1.add(data2));//246911
//subtract() 减法
System.out.println(data1.subtract(data2));//1
//multiply() 乘法
System.out.println(data1.multiply(data2));//15241260480
//divide() 除法
System.out.println(data1.divide(new BigInteger("10")));//12345
//remainder() 取余
System.out.println(data1.remainder(a));//87
//abs() 求绝对值
System.out.println(new BigInteger("-1234").abs());//1234
//negate() 取反
System.out.println(data1.negate());//-123456
//pow() 求幂
System.out.println(data1.pow(3));//1881640295202816
//doublevalue() 转为double
System.out.println(data1.doubleValue());//123456.0
//floatValue() 转为float
System.out.println(data1.floatValue());//123456.0
System.out.println(data1.intValue());//123456
//toString()
System.out.println(data1.toString());//123456
}
}