BigInteger对我来说很小

3 java biginteger

我在java中使用了非常大的数字.我正在使用BigInteger.我的十六进制数是0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff

这是十进制的: 1.1579208921035625e+77

代码:

public class BigNumber
{
    public static void main(String[] args)
    {
        BigInteger fp = new BigInteger(0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到错误:

BigNumber.java:5: error: integer number too large: ffffffff00000001000000000000000000000000ffffffffffffffffffffffff
        BigInteger fp = new BigInteger(0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff);
Run Code Online (Sandbox Code Playgroud)

如何在不丢失数据的情况下使用这个大数字?这可能吗 ?我以为BigInteger只受内存的限制.

Tun*_*aki 10

那是因为你需要使用String构造函数,它也需要一个基数.在这种情况下,基数为16.

public static void main(String[] args) {
    BigInteger fp = new BigInteger("ffffffff00000001000000000000000000000000ffffffffffffffffffffffff", 16);
    System.out.println(fp);
}
Run Code Online (Sandbox Code Playgroud)

在您的代码段中,十六进制值将转换为a,int因为它是一个整数字面值,因为它太大而无法容纳int,所以会引发错误.