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

a 可以表示的最大数double约为1.8e+308,并且Math.pow(10, 309)大于此数。当浮点计算像这样溢出时,你会得到+inf.

p % b != 0另外,在使用浮点变量时我会小心。

于 2013-02-18T08:03:39.150 回答