非常に長い10進数の算術演算
-
03-07-2019 - |
質問
私はいつも興味がありました:非常に長い小数で算術演算を実行するにはどうすればよいですか?たとえば、piを3000桁の小数位まで計算する(特に命令型言語で)
解決
任意の精度の数値をサポートする言語またはライブラリを使用します...?
Pythonでは、intは任意のサイズのlongに自動昇格します。 2番目の値を使用して、シフトする任意の精度の浮動小数点を取得するためにシフトする小数の数を追跡できます。
Javaでは、 BigDecimalを使用できます。 クラス。「不変の任意精度の符号付き10進数」を表します。
他の言語には他の例もあるはずです。
他のヒント
bignumでの計算をサポートしていない言語には、多くの場合ライブラリがあります。たとえば、 GMP をご覧ください。ドキュメントは、典型的なアルゴリズムのアプローチへのポインタを提供します。
bignumの算術演算を高速にするのは難しいため、かなり複雑なアルゴリズムがいくつかあります...
桁レベルでデータを操作する(たとえば、各桁を増分または決定論的に計算する)か、十分な精度を提供するのに十分なビット数を持つ新しいデータ構造を定義する必要があります。
所属していません StackOverflow