尝试从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
与浮点变量一起使用时,我会小心。