有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无穷大误差投影Euler#26个倒数循环

我在试图解决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);
        }
    }
}

共 (1) 个答案

  1. # 1 楼答案

    The infinity error is after p=309.

    一个double所能代表的最大数约为1.8e+308,而Math.pow(10, 309)大于这个数。当浮点计算像这样溢出时,会得到+inf

    此外,在使用p % b != 0和浮点变量时,我也要小心