尝试从Project Euler解决问题26时,我在Eclipse中收到错误。

我不想要解决方案!请。

如果您只能对为什么我收到“无穷大”作为输出提出建议,请填写我。我已经尝试使用Google搜索,但是很难不偶然看到解决方案,我宁愿以很少的帮助来完成此操作尽可能。

无穷大误差在p = 309之后。这可能根本不是“错误”,可能只是在截断某些内容。我尝试使用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);
        }
    }
}

最佳答案

无限误差在p=309之后。


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

此外,在将p % b != 0与浮点变量一起使用时,我会小心。

10-05 22:10