7

BigDecimal でオイラー数を取得する一般的に受け入れられている方法はありますか?

私は基本的に Math.exp(double a) を実行したいのですが、基本的に同じ関数が必要ですが、 BigDecimal を使用して計算して、他の計算での精度の低下を防ぎます。

やろうと思ったのですが、

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

しかし、それが問題にアプローチする正しい方法であるかどうかはわかりません。

4

3 に答える 3

4

問題は、オイラー数が無理数であることです。BigDecimal では、それを保持するために無限のメモリが必要になります。以前に保存された値がない理由は、必要な小数点以下の桁数がいくらであっても、現在のアプリケーションに適切な数値が得られないためです。

必要な小数点以下の桁数を決定してから、String コンストラクター (new BigDecimal("2.71828...")) を使用して BigDecimal 表現を構築する必要があります。

于 2012-08-07T23:59:03.383 に答える
1

まあ、Math.Eダブルです。オイラー数のより高い精度の表現が必要な場合は、小数点以下の任意の精度で作成するか、E の非常に高精度のバージョンを備えた BigDecimal 数学ライブラリがあります。

次のようなもので自分で近似することができます: Java を使用した e のより良い近似

于 2012-08-08T00:01:15.317 に答える
1

double Math.E はほとんどの計算に十分な精度を備えているはずですが、eをより正確に計算する方法があります。

double が含むことができるより正確なeを取得したい場合は、1/0!、1/1!、1/2!、1/3!... の合計を合計して計算します。

どこ !階乗を意味します。ゼロから始まるすべての階乗の逆数を足すだけです。追加する用語が多いほど、より正確になります。もちろん、eは無理数なので、真の値を取得することはできませんが、かなり近い値を取得することはできます。

于 2012-08-08T00:02:50.140 に答える