.NET 中的數值

.NET 提供數值整數和浮點基本類型的範圍,以及:

整數類型

.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 的類型包括以下項目:

  • 、 Vector2Vector3和 Vector4 型別,表示具有 2、3 和 4 Single 值的向量。

  • 兩種矩陣類型, Matrix3x2代表 3x2 矩陣,而 Matrix4x4代表 4x4 矩陣。

  • 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加速數值類型。

另請參閱