BigInteger类用于数学运算,涉及超出所有可用基元数据类型限制的非常大的整数计算。

例如,factorial 100包含158位数字,因此我们无法将其存储在任何可用的原始数据类型中。我们可以存储我们想要的大整数。对范围的上限没有理论限制,因为内存是动态分配的,但实际上由于内存有限,您可以存储一个具有Integer.MAX_VALUE位数的数字,该数字应该足以存储大多数所有大值。

下面是一个使用BigInteger的Java程序示例

// Java program to find large factorials using BigInteger
import java.math.BigInteger;
import java.util.Scanner;
  
public class Example
{
    // Returns Factorial of N
    static BigInteger factorial(int N)
    {
        // Initialize result
        BigInteger f = new BigInteger("1"); // Or BigInteger.ONE 
  
        // Multiply f with 2, 3, ...N
        for (int i = 2; i <= N; i++)
            f = f.multiply(BigInteger.valueOf(i));
  
        return f;
    }
  
    // Driver method
    public static void main(String args[]) throws Exception
    {
        int N = 20;
        System.out.println(factorial(N));
    }
}

输出:

2432902008176640000

通过这种方式,BigInteger类因其庞大的方法库而非常便于使用,并且在竞争性编程中也使用了很多。

现在,下面给出了原始算法中的简单语句列表及其根据BigInteger对象的类似语句。

方式

int a,b;                
BigInteger A,B;

初始化:

a = 54;
b = 23;
A  = BigInteger.valueOf(54);
B  = BigInteger.valueOf(37);

对于可用作字符串的整数,您可以将它们初始化为:

A  = new BigInteger(“54”);
B  = new BigInteger(“123456789123456789”);

BigInteger类中还定义了一些常量,以便于初始化:

A = BigInteger.ONE;
// Other than this, available constant are BigInteger.ZERO 
// and BigInteger.TEN

数学运算:

int c = a + b;
BigInteger C = A.add(B);

其他类似的函数有subtract(),multiply(),divide(),remainder()
但是所有这些函数都以BigInteger作为参数,所以如果我们想要这些操作用整数或字符串将它们转换为BigInteger,然后再将它们传递给函数,如下所示:

String str = “123456789”;
BigInteger C = A.add(new BigInteger(str));
int val  = 123456789;
BigInteger C = A.add(BigIntger.valueOf(val));

从BigInteger中提取值:

int x   =  A.intValue();   // value should be in limit of int x
long y   = A.longValue();  // value should be in limit of long y
String z = A.toString();


比较:

if (a < b) {}         // For primitive int
if (A.compareTo(B) < 0)  {} // For BigInteger

实际上compareTo根据值返回-1(小于),0(等于),1(大于)。

为了平等,我们也可以使用:

if (A.equals(B)) {}  // A is equal to B
 
转载请保留页面地址:https://www.breakyizhan.com/java/6601.html
扫描二维码添加微信 
  • ,每次淘宝领取淘宝优惠券,淘宝购物更优惠。现在添加微信,还可以领取机械键盘50元优惠券!添加微信后回复机械键盘即可领取!
    支持我们,就用微信淘宝!