我找不到我写的问题。我正在尝试 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));
}
}