私は Project Euler の問題をいくつかやっていますが、問題に遭遇しました。このアルゴリズムが 2^1000 で機能しない理由がわかりません。10^1 と 10^8 の範囲の数値 (これらは私がテストしたものです) で機能しますが、考えられるすべての範囲で機能するはずです。
ちなみに、2^1000 は 1.07*10^301 です。double の上限は多かれ少なかれ 10^308 にあるため、数値はまだ範囲内にあります。
import java.lang.Math;
public class Euler15 {
public static void main(String[] args) {
int count = 0;
double res = Math.pow(2,1000);
for(int i = 301; i >= 0; i--){
if (res == 0){
break;
}
while (res >= Math.pow(10, i)){
res-= Math.pow(10, i);
System.out.println(res);
count++;
}
}
System.out.println(count);
}
}