.NET 提供數值整數和浮點基本類型的範圍,以及:
- System.Half,表示半精確度浮點數。
- System.Decimal,表示十進位浮點數。
- 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 × 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 和更新版本包含 System.MathF 類別,提供接受 Single 型別之參數的方法。
您也可以使用 Double 類別來處理 Single、Half 和 System.BitConverter 中的個別位元值。 結構 System.Decimal 擁有一些方法,包括 Decimal.GetBits 和 Decimal(Int32[]),用來處理十進位值的個別位元和執行額外的數學運算。
Double、Single 和 Half 類型旨在用於那些本質上不精確的值(例如,兩顆星之間的距離),以及不需要高精確度和小捨入誤差的情況。 如需更高的精確度且應最小化捨入錯誤,請使用 System.Decimal 類型。
備註
此 Decimal 類型不會消除捨入的需求。 相反地,它會減少因四捨五入所造成的錯誤。
複雜
結構 System.Numerics.Complex 代表複數,也就是具有實數部分和虛數部分的數位。 它支援一組標準的算術、比較、相等、明確和隱含轉換運算元,以及數學、代數和三角方法。
啟用 SIMD 的類型
命名空間 System.Numerics 包含一組已啟用 .NET SIMD 的類型。 SIMD (單一指令多個資料) 作業可以在硬體層級平行處理。 這會增加向量化計算的輸送量,這在數學、科學和圖形應用程式中很常見。
.NET 支援 SIMD 的類型包括以下項目:
Plane 型別,代表三維空間中的一個平面。
Quaternion 型,表示用來編碼三維物理旋轉的向量。
類型 Vector<T> 表示指定數值類型的向量,並提供一組廣泛的運算子,得益於SIMD支持。 實例的計數是固定的 Vector<T> ,但其值 Vector<T>.Count 取決於執行程式代碼的計算機 CPU。
備註
類型 Vector<T> 隨附於 .NET Core 和 .NET 5+,但不包含 .NET Framework。 如果您使用 .NET Framework,請安裝 System.Numerics.Vectors NuGet 套件以取得此類型的存取權。
已啟用 SIMD 的類型是透過這類方式實作,以便與非 SIMD 啟用的硬體或 JIT 編譯程式搭配使用。 若要利用 SIMD 指令,您的 64 位應用程式必須由使用 RyuJIT 編譯程式的運行時間執行,此編譯程式包含在 .NET Core 和 .NET Framework 4.6 和更新版本中。 它會在以 64 位處理器為目標時新增 SIMD 支援。
如需詳細資訊,請參閱 使用SIMD加速數值類型。