分享方式:


.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 包含下列浮點類型:

類型 大小 (以位元組為單位) 大概範圍 Primitive? 備註
System.Half 2 ±65504 No 在 .NET 5 中引進
System.Single 4 ±3.4 x 1038 Yes
System.Double 8 ±1.7 × 10308 Yes
System.Decimal 16 ±7.9228 x 1028 No

HalfSingleDouble 類型皆支援代表非數字和無限大的特殊值。 例如,Double 類型能提供下列值:Double.NaNDouble.NegativeInfinityDouble.PositiveInfinity。 您會使用 Double.IsNaNDouble.IsInfinityDouble.IsPositiveInfinityDouble.IsNegativeInfinity 方法來測試這些特殊值。

每個浮點類型皆支援一組標準算術運算子。 System.Math 類別能提供適用於更廣泛數學函式的方法。 .NET Core 2.0 和更新版本包含 System.MathF 類別,該類別提供接受 Single 型別引數的方法。

藉由使用 System.BitConverter 類別,您也可使用 DoubleSingleHalf 中的個別位元。 System.Decimal 結構有它自己的方法,為 Decimal.GetBitsDecimal(Int32[]),用於使用十進位值的個別位元,而且還有一組自己的方法,用於執行一些額外的數學運算。

DoubleSingleHalf 類型主要供本質上並不精確的值使用 (例如兩個行星之間的距離),並且供不需較高有效位數和較小進位誤差的應用程式使用。 在需要較高精確度並將進位誤差降到最低的情況下,請使用 System.Decimal 類型。

注意

Decimal 類型並不會消除進位的需求。 它會將因進位而產生的錯誤降到最低。

Complex

System.Numerics.Complex 結構代表複數,也就是具有實部和虛部的數字。 它支援一組標準的算術、比較、等號比較、明確及隱含轉換的運算子,以及數學、代數和三角函數方法。

啟用 SIMD 的類型

System.Numerics 命名空間包含一組 .NET 啟用 SIMD 的類型。 SIMD (單指令多資料) 作業可在硬體層級進行平行處理。 這能提升向量化運算 (常見於數學、科學及圖形應用程式中) 的輸送量。

.NET 啟用 SIMD 的類型包含下列項目:

  • Vector2Vector3Vector4 類型,其代表具有 2、3 及 4 Single 值的向量。

  • 兩種矩陣型別:代表 3x2 矩陣的 Matrix3x2,以及代表 4x4 矩陣的 Matrix4x4

  • Plane 類型,其代表立體空間中的平面。

  • Quaternion 類型,其代表用來編碼 3D 實體旋轉的向量。

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

另請參閱