0

Project Eulerから問題#26を解決しようとすると、Eclipseでエラーが発生します。

私は解決策を望んでいません!お願いします。

出力として「無限大」を受け取る理由についてのみ提案をいただければ、記入してください。これをグーグルで試しましたが、誤って解決策を見つけないようにするのは難しいので、少しの助けでこれを行いたいと思います。できるだけ。

無限誤差はp=309の後にあります。これは「エラー」ではない可能性があります。おそらく、単に何かを切り捨てているだけです。私はlongとBigIntegerを試しましたが、役に立たなかったようです。

PE#26で発生する問題は次のとおりです。

これが私のコードです:

public class Reciprocal_Cycles {

    public static void main(String[] args) {
        double b = 10;
        double p;
        for (p = 1; p < 1000; p++) {
            if (p % b != 0)

            System.out.println(((Math.pow(b, p - 1) - 1)) / p + "       " + p);
        }
    }
}
4

1 に答える 1

2

無限大エラーは の後p=309です。

が表すことができる最大の数doubleは約1.8e+308で、Math.pow(10, 309)これよりも大きくなります。このように浮動小数点演算がオーバーフローすると、 が得られ+infます。

p % b != 0また、浮動小数点変数を使用する場合は注意が必要です。

于 2013-02-18T08:03:39.150 に答える