你如何使用BigInteger?

时间:2014-02-02 22:22:43

标签: java

你如何准确使用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保留这个潜在的巨大价值,以便我可以在程序中操作它。

4 个答案:

答案 0 :(得分:5)

Math.pow会返回double2^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在计算大值时是一个非常强大的工具,但它也更繁琐,需要更长,更复杂的代码。