你如何准确使用BigInteger?我正在尝试执行以下操作:
import java.util.*;
import java.math.*;
public class hello{
public static void main(String[] args){
for(int i = 0; i <= 1024; i++){
BigInteger a = new BigInteger(Math.pow(2,i));
System.out.println(a);
}
}
}
我希望a
保留这个潜在的巨大价值,以便我可以在程序中操作它。
答案 0 :(得分:5)
Math.pow
会返回double
而2^i
无法在double
中显示,因为它太大了。
您需要使用pow
中的BigInteger
方法:
BigInteger a = BigInteger.valueOf(2).pow(i);
答案 1 :(得分:2)
Java的Math类没有BigInteger方法。 改为使用BigInteger的方法。
BigInteger a = new BigInteger(Math.pow(2,i));
System.out.println(a);
应该是
BigInteger a = new BigInteger("2").pow(i); // String to BigInteger, and then power
System.out.println(a);
或
BigInteger a = BigInteger.valueOf(2).pow(i); // long to BigInteger, and then power
System.out.println(a);
答案 2 :(得分:2)
没有BigInteger(double)
构造函数。尝试使用new BigInteger(String)
代替Math.pow
使用BigInteger#pow
方法,该方法也会返回BigInteger
。
for (int i = 0; i < 200; i++) {
BigInteger a = new BigInteger("2").pow(i);
System.out.println(a);
}
答案 3 :(得分:1)
将BigInteger想象成一个字符串。您不能像使用原始数据类型那样使用任何算术运算符,关系运算符和一元运算符。相反,您必须使用BigInteger
类中的方法对BigInteger执行操作。
例如,如果您想要乘以两个BigIntegers,则无法执行此操作:
BigInteger a = (new BigInteger("5"))*(new BigInteger("7"));
相反,您必须声明两个BigIntegers,然后将它们与.multiply()
BigInteger a = new BigInteger("5");//note how these numbers are like strings
BigInteger b = new BigInteger("7");
BigInteger c = a.multiply(b);
因此,对于您想要打印2的幂的程序,您必须以稍微不同的方式使用BigInteger。
for(int i = 0; i <= 1024; i++){
BigInteger a = new BigInteger("2").pow(i);
System.out.println(a);
}
请注意.pow()
内的值是int
。这是在BigInteger documentation中指定的。从本质上讲,BigInteger在计算大值时是一个非常强大的工具,但它也更繁琐,需要更长,更复杂的代码。