在尝试解决Project Euler中的问题#26时,我在Eclipse中收到错误。
我不想要解决方案!请。
如果你能给我一个建议,只是为什么我收到“无限”作为输出,请填写我。我已经尝试谷歌搜索但很难不偶然看到解决方案,我宁愿这样做尽可能少的帮助。
无穷大误差在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);
}
}
}
答案 0 :(得分:2)
无穷大错误发生在
p=309
之后。
double
可以表示的最大数字约为1.8e+308
,而Math.pow(10, 309)
大于此数字+inf
。当浮点计算溢出时,您得到p % b != 0
。
另外,将{{1}}与浮点变量一起使用时要小心。