0

プログラムで行う数値演算は、特定のデータ型 (またはハードウェアがサポートするもの) に対して言語が指定するバイト数によって制限されます。整数を使用して給料の計算を行うことができるとします (「短い」ものでも、1 年間の収入には十分すぎる!!! ;)) が、ビル ゲイツの富については同じことができません。それで、私たちは長い長いものなどに行きます。しかし、私たちはまだ与えられたビット数に翻弄されていませんか。

では、ソフトウェアで数値演算をエミュレートしたらどうでしょうか。数千桁の数値を抽象化し、数値演算を実行できるクラスを考えてみましょう...もちろん遅すぎますが、複雑さについてはあまり心配していませんが、計算可能性だけを見てください...

多分私はそれを使って PI を 1 ヶ月で 1000 桁の精度で計算するか、数年で Mersenne Primes を計算し、10 万ドルを家に持ち帰ることができます ;)

だから今、私の質問は、1)この種のことを行うためのそのようなライブラリはすでにありますか(C / C ++で)。2) 実装する場合、何か提案はありますか? (+、-、​​、/、%、<<、>> 操作で十分だと思います)


PS:

  1. 私は C/C++ プログラマーです。

  2. そして、この制限は学生時代から私を悩ませ始めました。

4

1 に答える 1

2

このようなデータ型は、任意精度数として知られています。Javaには、桁レベルの基本操作(+、-、​​、/)を扱うクラスBigDecimalとクラスがあります。BigInteger「組み込み」のサイズ制限はありません。それらは実際にはそれほど遅くはなく、多くの実世界のドメインで使用されています。

C/C++ には組み込まれていませんが、多くのライブラリが存在します。ここでリストを参照してください: http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic#Libraries

于 2010-10-29T20:02:46.170 に答える