答案中的未知因素

Bri*_*ian -1 java sum-of-digits

我找不到我写的问题.我正在尝试Project Euler#16,我需要将所有数字加起来为2 ^ 1000.我的程序使用较小的数字,但随着数字大约18位左右,它会中断.有帮助吗?

public static double digit(double n){

    return n % 10;

}

public static double sumofDigits(double n){

    double sum = 0;

    while(n > 1){

        sum += digit(n);
        n = Math.floor(n/10);

    }

    return sum;

}

public static void main(String[] args) {

    double x = Math.pow(2,1000);

    double y = 22222222222222222222d;

    System.out.println(sumofDigits(x));

            System.out.println(sumofDigits(y));

}
Run Code Online (Sandbox Code Playgroud)

}

Hen*_*nry 5

双精度约为16位十进制数.由于2电源1000具有更多的数字(大约300),你根本无法使用双倍.

看看BigInteger类.