如何在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
答案 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
仍然无法计算非常大的值。一个建议?