.NET には、次のような数値整数および浮動小数点プリミティブの範囲が用意されています。
- System.Half:半精度浮動小数点数を表します。
- System.Decimal10 進浮動小数点数を表します。
- System.Numerics.BigIntegerは、理論上または下限のない整数型です。
- System.Numerics.Complexは複素数を表します。
- System.Numerics名前空間の SIMD 対応型のセット。
整数型
.NET では、次の表に示すように、符号付き 8 ビット、16 ビット、32 ビット、64 ビット、128 ビットの両方の整数型がサポートされています。
符号付き整数型
タイプ | サイズ (バイト単位) | 最小値 | 最大値 |
---|---|---|---|
System.Int16 | 2 | -32,768 | 32,767 |
System.Int32 | 4 | -2,147,483,648 | 2,147,483,647 |
System.Int64 | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
System.Int128 | 16 | −170,141,183,460,469,231,731,687,303,715,884,105,728 | 170,141,183,460,469,231,731,687,303,715,884,105,727 |
System.SByte | 1 | -128 | 127 |
System.IntPtr (32 ビット プロセス) | 4 | -2,147,483,648 | 2,147,483,647 |
System.IntPtr (64 ビット プロセス内) | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
符号なし整数型
タイプ | サイズ (バイト単位) | 最小値 | 最大値 |
---|---|---|---|
System.Byte | 1 | 0 | 255 |
System.UInt16 | 2 | 0 | 65,535 |
System.UInt32 | 4 | 0 | 4,294,967,295 |
System.UInt64 | 8 | 0 | 18,446,744,073,709,551,615 |
System.UInt128 | 16 | 0 | 340,282,366,920,938,463,463,374,607,431,768,211,455 |
System.UIntPtr (32 ビット プロセス) | 4 | 0 | 4,294,967,295 |
System.UIntPtr (64 ビット プロセス内) | 8 | 0 | 18,446,744,073,709,551,615 |
各整数型は、一連の標準算術演算子をサポートします。 System.Math クラスは、より広範な数学関数のセットのメソッドを提供します。
System.BitConverter クラスを使用して、整数値内の個々のビットを操作することもできます。
注
符号なし整数型は CLS に準拠していません。 詳細については、「 言語に依存しないコンポーネントと言語に依存しないコンポーネント」を参照してください。
BigInteger
System.Numerics.BigInteger構造体は、理論上の値に上限または下限がない任意の大きな整数を表す不変型です。 BigInteger型のメソッドは、他の整数型のメソッドと密接に並行しています。
浮動小数点型
.NET には、次の浮動小数点型が含まれています。
タイプ | サイズ (バイト単位) | おおよその範囲 | 原始的。 | 注記 |
---|---|---|---|---|
System.Half | 2 | ±65504 | いいえ | .NET 5 で導入されました |
System.Single | 4 | ±3.4 x 1038 | イエス | |
System.Double | 8 | ±1.7 × 10308 | イエス | |
System.Decimal | 16 | ±7.9228 x 1028 | いいえ |
Half、Single、およびDoubleの型は、数値と無限大を表す特殊な値をサポートします。 たとえば、 Double 型は、 Double.NaN、 Double.NegativeInfinity、および Double.PositiveInfinityの値を提供します。 これらの特別な値をテストするには、 Double.IsNaN、 Double.IsInfinity、 Double.IsPositiveInfinity、および Double.IsNegativeInfinity のメソッドを使用します。
各浮動小数点型は、一連の標準算術演算子をサポートします。 System.Math クラスは、より広範な数学関数のセットのメソッドを提供します。 .NET Core 2.0 以降には、Single型の引数を受け入れるメソッドを提供するSystem.MathF クラスが含まれています。
System.BitConverter クラスを使用して、Double、Single、およびHalf値の個々のビットを操作することもできます。 System.Decimal構造体には、10 進値の個々のビットを操作するための独自のメソッド(Decimal.GetBitsとDecimal(Int32[]))、およびいくつかの追加の数学演算を実行するための独自のメソッドセットがあります。
Double、Single、およびHalf型は、その性質上、不正確な値 (たとえば、2 つの星間の距離) や、高い精度と小さな丸め誤差が不要なアプリケーションに使用することを目的としています。 System.Decimal型は、精度が高く、丸めエラーを最小限に抑える必要がある場合に使用します。
注
Decimal型では、丸める必要はありません。 むしろ、丸めによるエラーを最小限に抑えます。
コンプレックス
System.Numerics.Complex構造体は複素数、つまり実数部と虚数部を持つ数値を表します。 算術、比較、等値、明示的および暗黙的な変換演算子、数学、代数、三角関数のメソッドの標準セットがサポートされています。
SIMD が有効な型
System.Numerics名前空間には、.NET SIMD 対応型のセットが含まれています。 SIMD (単一命令の複数データ) 操作は、ハードウェア レベルで並列化できます。 これによって、数学、科学、グラフィックスのアプリで一般的なベクター化された計算のスループットが向上します。
.NET SIMD 対応の型には、次のものが含まれます。
Plane型。3 次元空間内の平面を表します。
Quaternion型。3 次元の物理的回転をエンコードするために使用されるベクターを表します。
Vector<T>型。これは、指定された数値型のベクトルを表し、SIMD サポートの恩恵を受ける広範な演算子セットを提供します。 Vector<T> インスタンスの数は固定されていますが、その値Vector<T>.Countは、コードが実行されるコンピューターの CPU によって異なります。
注
Vector<T>型は .NET Core および .NET 5 以降に含まれていますが、.NET Framework には含まれません。 .NET Framework を使用している場合は、 System.Numerics.Vector NuGet パッケージをインストールして、この型にアクセスします。
SIMD 対応型は、SIMD 対応以外のハードウェアまたは JIT コンパイラで使用できるように実装されます。 SIMD 命令を利用するには、.NET Core および .NET Framework 4.6 以降のバージョンに含まれている RyuJIT コンパイラを使用するランタイムによって 64 ビット アプリを実行する必要があります。 64 ビット プロセッサを対象とする場合、SIMD のサポートが追加されます。
詳細については、「 SIMD 高速数値型の使用」を参照してください。
こちらも参照ください
.NET