私は、非常に多くの桁数を持つ膨大な数の算術を含むアプリを書いています。以前、大きな数値を文字列として定義し、低速の算術文字列関数を使用することで、大きな数値の処理を簡素化するクラスを作成しました。これが最善の方法ですか?そうでない場合、この問題にどのようにアプローチすればよいですか? C# には、そのような状況に対応する組み込み機能はありますか?
5 に答える
.NET 4 で実行できる場合は、System.Numeric.BigIntegerが役立ちます。古いバージョンの .NET を使用している場合は、IntXが役に立ちます。
C# の大きな整数に関するこの SO の質問も参照してください。
.NET 4 には、BigInteger 型を介してこれが組み込まれます。これはかなりよく調整されていると主張されており、非常にうまく機能するはずです.
3.5 以前では、動的言語ランタイムソースから BigInteger の実装を取得できます。(たとえば、 http ://dlr.codeplex.com/sourcecontrol/changeset/view/40021?projectName=dlr#694008 を参照して、Src / Runtime / Microsoft.Dynamic / Math にドリルダウンします。) .NET 4 BigInteger 型と同じくらい高度に調整されていますが、整数型を使用して大きな数を内部的に表し、整数演算を使用して演算を実行するため、文字列バージョンよりも効率的である必要があります。
GNU MP bignum ライブラリは、最も高速なライブラリの 1 つです。そのための.NETラッパーがあります http://gnumpnet.codeplex.com/
ソース付きの .NET 用の別のbignum ライブラリを次に示します。
暗号化プロジェクトで何度も使用した Big Integer クラス (非常に大きな数が必要な場合)。よく働く。
4.0 より上の dotnet バージョンで
System.Numerics.BigInteger
は、この問題の解決に役立ちます。
上記の構文を使用してアセンブリ参照エラーが発生した場合は、次を使用して参照を追加します
http://www.dllme.com/dll/files/system_numerics_dll.html .
これがあなたを助けることを願っています..!