3

Python 2.6 では、Decimal に相当するものsqrt(pi)

Decimal(pi).sqrt()

sin、cos、またはその他の(逆)三角関数にそのようなものはありますか?

ドキュメントでは、計算方法cosと計算方法についてのみ言及していますsinDecimal(pi).cos()存在しないfrom decimal import cos

更新:デフォルトの三角関数を使用する際の問題は、Decimal何かを計算するたびに浮動小数点数から元に戻すと、使用するポイントが無効になることです。(またDecimal、計算ごとに入力するのは面倒ですが、ラッパー関数を作成できると思います)

4

4 に答える 4

6

これを参照してください。

http://docs.python.org/library/decimal.html#decimal-recipes

于 2012-06-08T15:40:10.890 に答える
5

Decimal ライブラリは、主に丸めの正確な制御が必要な金融計算のために、適切に丸められた 10 進数の算術演算をサポートすることを目的としていました。汎用の任意精度ライブラリを意図したものではありません。

汎用の任意精度ライブラリが必要な場合は、mpmathまたはgmpy2を参照してください。

于 2012-06-08T18:25:33.637 に答える
4

三角関数はmath モジュールにあります

そう:

>>> decimal.Decimal(math.cos(0.1))
Decimal('0.99500416527802570954008842818439006805419921875')

三角関数をサポートする Python の多精度数学ライブラリを探しているなら、Decimal ではありません。mpmathを見てください。Mpmath は、任意の精度で三角関数をサポートします。10 進数はありません。

于 2012-06-08T15:40:07.030 に答える
3

sin(a) と cos(a) の値は、特定の角度に対してのみ有理数であるため (「リンク」を参照)、精度を失うことなく、sin(a) または cos(a) の値を Decimals として格納することはできません。これは、sin 値と cos 値を Decimal に変換し、sin 値と cos 値を Decimal として返す組み込み関数を持つという目的を無効にします。

(-1)**_sign * _int * 10**_expさらに、Python の小数は、Decimal が完全な精度で格納するには有理数の除数が 10 でなければならないため、精度を失うことなくすべての有理数を Decimal として格納することはできません。

@carrot-top の mpmath アドバイスまたは数値アルゴリズム (テイラー級数近似など) が最適だと思います。

于 2012-06-08T16:03:12.643 に答える