我正在编写一个计算欧拉数的代码,但我没有很好的精度。如果我的 i(变量到阶乘)是 40,代码将返回无穷大,但是,20 或 30 代码会正确返回数字
我的代码
double e = 1;
for (int i = 1; i < 18; i++)
{
double j = (double)(E.factorial(i));
double k = 1 / j;
e = e + k;
}
最佳答案
您应该将 double
替换为 BigDecimal
。这将使代码更加精确。
BigDecimal e = 0;
BigDecimal demo = 1;
for (int i = 1; i < 400; i++) {
e += demo;
demo /= i;
}
关于java - 欧拉数 java 中的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24909794/