gpt4 book ai didi

java - 对于这种数学计算有更好的解决方案吗? ( java )

转载 作者:行者123 更新时间:2023-11-30 05:56:11 25 4
gpt4 key购买 nike

我有一个 Java 程序必须做作业,这是我必须使用的公式:picture of formula .抱歉,我的母语不是英语,我不知道这个公式的名称。

我写了这个解决方案:

/* Check: 
* if: j<=3:
*
* 1/1+sqrt2=0,414213562
* 1/sqrt2+sqrt3=0,317837245
* 1/sqrt3+sqrt4=0,267949192
* res= 0,9999999 =~1.0
*/
double sum = 0;
for (int j = 2; j <= 624; j++)
{
sum += 1 / ((Math.sqrt(j) + Math.sqrt(j + 1)));
}
double res = 0;
res = (double)1 / (1 + Math.sqrt(2)) + sum;

System.out.println("Result is: " + res);

我已经检查了 j=2 的程序至 j=3 ,它给出了正确的结果(大约 1.0)。所以我认为它运作良好。但是,当我尝试了 j<=624 ,我的结果是:24.000000000000014

1.如何在我的程序中使结果为 24.0 而不是 24.000000000014?

2. 这个数学公式有更好的解决方案/源代码吗?这个公式的英文名称是什么?

最佳答案

欢迎来到浮点计算的世界。除非您可以使用代数以使用更少项或更快收敛的方式重写您的公式,否则您就不走运了——浮点计算从来都不是精确的并且会累积错误,正如您从示例中看到的那样。

(在这种情况下的具体提示:您的项的形式为 Xk = 1/(sqrt(k) + sqrt(k+1))。尝试将分子和分母乘以 sqrt (k+1) - 开方(k))

关于java - 对于这种数学计算有更好的解决方案吗? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7472237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com