C#では、UInt64の最大値(18,446,744,073,709,551,615)を大幅に超える数値をどのように格納して計算できますか?UInt64(C#)より大きい数値を扱う方法
答えて
BigIntegerクラスを使用すると、 J#ライブラリ(確かにC#からアクセス可能)、F#(テストする必要があります)に別のものがあります。純粋なC#には自立型実装such as this oneがあります。
小数の範囲がより広い。
.NET 4.0ではbigIntegerがサポートされていますが、まだベータ版ではありません。
.NET 4.0ベータ版を使用できますか?その場合は、BigInteger
を使用できます。
それ以外の場合は、数字が28桁以内の場合はdecimal
を使用できますが、それは明らかに小数値演算を実行するため、補正するためにさまざまな場所で丸める必要があることに注意してください。
名前空間の問題に問題がある人は、System.Numericsの下にあります。 – Adrian
大きな整数で計算するためのライブラリがいくつかありますが、暗号化ライブラリのほとんどにもクラスが用意されています。無料のライブラリについては、thisを参照してください。
decimalを使用できます。 Int64より大きい。
有効数字は28-29です。
これらの番号はどのように使用しますか?あなたが本当に大きな数字で計算している場合は、最後の数字まで正確さが必要ですか? そうでない場合は、代わりに浮動小数点値の使用を検討する必要があります。彼らは巨大なことがあります。ダブルタイプの最大値は1.79769313486231570E + 308です(科学的表記に慣れていない場合は、1.79769313486231570に10000000 ... 0000 - 308のゼロを掛けたものを意味します)。
OPが整数を指定していなかったことを考えると、誰もこれについて言及していないことは驚くべきことです。 –
BigIntegerほとんどの用途のために十分に大きくなければならない
は、任意の大きさの符号付き整数を表します。
using System.Numerics;
var a = BigInteger.Parse("91389681247993671255432112000000");
var b = new BigInteger(1790322312);
var c = a * b;
また注目すべき点 - PythonとRubyの無限精度整数をサポートするDLRの実装はまだありますが、私はそのクラスの公開APIが何であるかを見ていません。 –