这看起来很简单但是我的代码输出的答案不正确。有人可以暗示我可能在这里失踪的东西,或者我可能在没有给出任何解决方案的情况下犯了错误吗?
问题是找出前100个自然数的平方和与总和的平方之间的差异。
我的代码:
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解决了我的问题。真是个愚蠢的错误!
答案 0 :(得分:1)
您必须使用完整的整数类型,例如int
,long
或BigInteger
。 float
/ double
会导致舍入错误。此外 - 你非常接近; - )。
答案 1 :(得分:0)
首先想到的是你不应该使用双打,而应该使用整数运算。