如何将一个非常大的数字分配给 BigInteger?
How to assign a very large number to BigInteger?
给定以下输入:
4534534534564657652349234230947234723947234234823048230957349573209483057
12324000123123
我试图通过以下方式将这些值分配给 BigInteger
。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigInteger num1 = BigInteger.valueOf(sc.nextLong());
sc.nextLine();
BigInteger num2 = BigInteger.valueOf(sc.nextLong());
BigInteger additionTotal = num1.add(num2);
BigInteger multiplyTotal = num1.multiply(num2);
System.out.println(additionTotal);
System.out.println(multiplyTotal);
}
第一个值在 Long 数的边界之外,因此出现以下异常:
Exception in thread "main" java.util.InputMismatchException: For input
string:
"4534534534564657652349234230947234723947234234823048230957349573209483057"
我假设 BigInteger 期望 Long 类型与 valueOf()
方法一起使用(如 here 所述)。如何将非常大的数字传递给 BigInteger?
当输入的数字不适合long
,use the constructor that takes a String
argument:
String numStr = "453453453456465765234923423094723472394723423482304823095734957320948305712324000123123";
BigInteger num = new BigInteger(numStr);
使用字符串构造函数。
像这样。
http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#BigInteger(java.lang.String)
如果 long 数据类型可以处理任意大的数字,就不需要 BigInteger。
使用字符串构造函数:http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#BigInteger(java.lang.String)
public BigInteger(String val)
以字符串形式读取巨大的数字。
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
String s = in.nextLine();
BigInteger num1 = new BigInteger(s);
s = in.nextLine();
BigInteger num2 = new BigInteger(s);
//do stuff with num1 and num2 here
}
给定以下输入:
4534534534564657652349234230947234723947234234823048230957349573209483057
12324000123123
我试图通过以下方式将这些值分配给 BigInteger
。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
BigInteger num1 = BigInteger.valueOf(sc.nextLong());
sc.nextLine();
BigInteger num2 = BigInteger.valueOf(sc.nextLong());
BigInteger additionTotal = num1.add(num2);
BigInteger multiplyTotal = num1.multiply(num2);
System.out.println(additionTotal);
System.out.println(multiplyTotal);
}
第一个值在 Long 数的边界之外,因此出现以下异常:
Exception in thread "main" java.util.InputMismatchException: For input string: "4534534534564657652349234230947234723947234234823048230957349573209483057"
我假设 BigInteger 期望 Long 类型与 valueOf()
方法一起使用(如 here 所述)。如何将非常大的数字传递给 BigInteger?
当输入的数字不适合long
,use the constructor that takes a String
argument:
String numStr = "453453453456465765234923423094723472394723423482304823095734957320948305712324000123123";
BigInteger num = new BigInteger(numStr);
使用字符串构造函数。
像这样。
http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#BigInteger(java.lang.String)
如果 long 数据类型可以处理任意大的数字,就不需要 BigInteger。
使用字符串构造函数:http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#BigInteger(java.lang.String)
public BigInteger(String val)
以字符串形式读取巨大的数字。
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
String s = in.nextLine();
BigInteger num1 = new BigInteger(s);
s = in.nextLine();
BigInteger num2 = new BigInteger(s);
//do stuff with num1 and num2 here
}