-2

所以我尝试使用 BigDecimal,它给我欧拉数的值高达 50 个小数点。但由于约束值如此之高,数字的范围可以从 1 到 10^6000,因此我没有得到任何精度(使其最佳是另一个问题)。这是代码块:

for(int i=1; i<n+1; i++){
 // i is the integer value and bd is the value of the euler's number, so below i am multiplying the value of i with the euler's number
 BigDecimal x = BigDecimal.valueOf(i).multiply(bd);
 //Here i am taking floor of the above calculated value
 x.setScale(0, RoundingMode.HALF_UP);
 //and here sum is floor[1*euler's no] + floor[2*euler's number] + ... + floor[n*euler's number] 
 sum += x.intValue();
}
4

1 回答 1

0

我想您是在问如何e更精确地计算欧拉数(即 )。

答案是实现一个快速收敛的算法。通过一些研究,我找到了“计算 e 的值”这个页面。在底部,它描述了兄弟公式:

e =​ Sum(n=0, n=​∞​​​, (2n+2)​​ / (2n+1)!​​ )

它收敛得非常快。您可以使用 BigDecimal 在 Java 中对其进行编码,以计算出您需要的任意位数精度。

也可以看看:

其中(如果我理解正确的话!)给出了一个更复杂的公式,它收敛得更快。

于 2017-06-08T13:18:57.133 回答