在javascript中计算欧拉数到第n位

时间:2017-07-03 13:39:46

标签: javascript algorithm

如何在JavaScript中将Euler的数字计算为第n位?

e   =   1/0! + 1/1! + 1/2! + ...    
    =   2.7182818284590...to nth digit  (base 10)

下面的代码只返回16位小数,精度取决于迭代次数/或传递给函数的次数。

代码

function calcE(n) {
  let euler, itr;
  euler = 0
  itr = Number(n)
    for (var i = 0; i < itr+1; i++) {
      let fact = factorial(i)
      euler += 1/fact
    }
  return euler;
}

演示: miniwebtool

2 个答案:

答案 0 :(得分:0)

您应该找到大于2*10^n的第一个因子。如果是m!,则应将e数字计算到1/m!

对于m!的估算,您可以使用Stirling's approximation。不要害怕e在那里存在 - 你可以非常粗略地计算它,真的只需要订单。这样可以预先确定添加的数量。它可以通过不同的算法计算得更快。

如果您不需要预先设置它,您可以计算每个1 / m!添加并简单地将其与0.5 / 10 ^ n进行比较。第一个小于1/10 ^ n的加法是你应该使用的最后一个。

    limit = 0.5/10^n
    add = 1
    i = 1
    euler = 1
    while(add>limit) {
      add /= i
      euler += add
      i++
    }
    return euler

答案 1 :(得分:0)

使用result['bdate'] = pd.to_datetime(result['dte']) + BMonthEnd(0) result['bdaterange'] = pd.bdate_range(pd.to_datetime(result['dte'], unit='ns').values, pd.to_datetime(result['bdate'], unit='ns').values) print(result['bdaterange']) 包来处理大小数。找到解决方案。

<强>欧拉

npm decimal.js

仍然无法计算非常大的值。一个建议?