double や int64 などの整数データ型では不十分な非常に大きな数の計算を行う場合、そのような大きな数を処理する別のクラスが必要になる場合があります。
これを行う最善の方法について効率的なアルゴリズムを提供したいと思う人はいますか?
double や int64 などの整数データ型では不十分な非常に大きな数の計算を行う場合、そのような大きな数を処理する別のクラスが必要になる場合があります。
これを行う最善の方法について効率的なアルゴリズムを提供したいと思う人はいますか?
あなたの問題には2つの解決策があります:
簡単な方法: ' The GNU MP Bignum Library などの外部ライブラリを使用し、実装の詳細は忘れてください。
難しい方法: double または int64 変数などの複数の高次データ型を含む独自のクラス/構造を設計し、演算子のオーバーロード (C++ の場合) を使用するか、add、subtract、multiply、shift などのメソッド (JAVA の場合) を使用して、基本的な数学演算を定義します。およびその他の OO 言語)。
さらにサポートが必要な場合はお知らせください。私はこれを過去に数回行いました。
C# 4.0 ではBigInteger 型を使用します
言語の組み込み機能を使用することは私にとってはうまくいきます。
Java にはBigInteger
とがありBigDecimal
、数値が やその他の範囲外になると、Python は Java に似たオブジェクトに自動的に切り替えますinteger
。
ただし、他の言語については、私にはわかりません。
車輪の再発明は嫌いです。
独自の BigNum ライブラリを作成するのは複雑なので、jjnguy のように言います。言語がライブラリとして提供するものは何でも使用してください。
.net では、BigInteger クラスと BigDecimal クラスが含まれている VisualJ dll を参照します。ただし、たとえば平方根メソッドがないなど、これらのライブラリのいくつかの制限に注意する必要があります。