BigDecimal Euler的数字计算来模拟Math.exp(double a)

是否有一种普遍接受的方法可以在BigDecimal中获得Euler的数字?

我基本上想做Math.exp(double a),我基本上想要相同的函数但是使用BigDecimal计算以防止其他计算的精度损失。

我想到了,

BigDecimal.valueOf(Math.E).pow(BigDecimal.SOMEOTHERNUMBER) 

但不确定这是否是解决问题的正确方法。

问题是欧拉的数字是不合理的; 在BigDecimal中,你必须拥有无限的内存才能拥有它。 之前没有存储值的原因是,无论您需要多少小数位,您的当前应用程序都没有正确的数字。

您将不得不确定所需的小数位数,然后使用String构造函数构造BigDecimal表示(new BigDecimal(“2.71828 …”))。

好吧, Math.E是双倍的。 如果您想要更高精度的欧拉数表示,您可以使用一些任意精度的小数位创建它,或者存在具有非常高精度版本的E的BigDecimal数学库。

你可以用这样的东西来近似一个: 用Java更好地逼近e

虽然双Math.E对于大多数计算应该足够准确,但有一种方法可以计算e以获得更高的精度。

如果你想获得双倍可以包含的精度更高的e ,你可以通过加总1/0!,1/1!,1/2,1/3的总和来计算它!…

哪里! 意味着阶乘。 只需将从零开始的所有因子的倒数相加即可。 您添加的术语越多,您获得的精确度就越高。 当然,因为e是不合理的,你永远无法获得真正的价值,但你可以得到相当接近。