这看起来很简单,但我的代码输出了错误的答案。有人可以暗示我在这里可能缺少什么,或者我可能在不给出任何解决方案的情况下犯了错误吗?
问题是求前一百个自然数的平方和与总和的平方之间的差。
我的代码:
public class Main
{
public static void main(String[] args)
{
//Sum of Squares = (2n^3 + 3n^2 + n)/6
//Square of Sums = ((n^2 + n)/2)^2
double sum_squares = ((2*Math.pow(100,3) + 3*Math.pow(100, 2) + 100)/6);
double square_sums = Math.pow(((Math.pow(100, 2) + 100)/2), 2);
System.out.println((square_sums-sum_squares)+"\n");
}
}
我的输出是 2.516415E7,这是不正确的,即使我在没有使用科学记数法的情况下输入它也是如此。
亲爱的 Stack Overflow——我在这里错过了什么大概是简单的事情!
编辑:Peter de Rivaz 解决了我的问题。多么愚蠢的错误!
最佳答案
您必须使用精确的整数类型,例如 int
、long
或 BigInteger
。 float
/double
将导致舍入错误。此外 - 你已经很接近了;-)。
关于java - 欧拉项目 #6 Java 协助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9437325/