Java 大数BigInteger使用
由于在 Java中,在不使用大数的情况下,整数最大范围为long型(能够表示64位的整数),速度快 ,但是当运算超过long型的范围时,我们就需要用
java.math.BigInteger
(另外一个是java.math.BigDecimal
,用于进行小数运算 )来表示任意大小的整数了,其内部用一个int[]
数组来模拟一个非常大的整数
以下为BigInteger
以及BigDecimal
相关API介绍:
以下用一个例子来实现BigInteger
:
**程序 :**将一个十六进制的字符串转换为十进制的字符串(支持输入多个字符串 )
未使用大数
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str ;
int HEX = 16;
while(sc.hasNext()){
str = sc.nextLine();
str = str.substring(2);
int result = Integer.parseInt(str, HEX);
System.out.println(result);
}
}
}
使用大数
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str ;
BigInteger HEX = new BigInteger("16");
while(sc.hasNext()){
str = sc.nextLine();
str = str.substring(2);
BigInteger result = new BigInteger("0");
for(int i = 0; i < str.length(); i++){
char ch = str.charAt(str.length()-1-i);
if(ch >= 'A' && ch <= 'F'){
BigInteger tmp = HEX.pow(i).multiply(new BigInteger(Integer.toString((ch - 'A' + 10))));
result = result.add(tmp);
}else{
BigInteger tmp = HEX.pow(i).multiply(new BigInteger(Character.toString(ch)));
result = result.add(tmp);
}
}
System.out.println(result);
}
}
}
另外一种使用大数
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str;
int HEX = 16;
while (sc.hasNext()) {
str = sc.nextLine();
str = str.substring(2);
}
System.out.println(new BigInteger(str, HEX));
}
}