Sdílet prostřednictvím


Číselné hodnoty v .NET

.NET poskytuje různé číselné celé typy a primitivní typy pro čísla s plovoucí desetinnou čárkou, jakož i:

Celočíselné typy

.NET podporuje podepsané i nepodepsané 8bitové, 16bitové, 32bitové, 64bitové a 128bitové celočíselné typy uvedené v následujících tabulkách.

Typy podepsaných celých čísel

Typ Velikost (v bajtech) Minimální hodnota Maximální hodnota
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 (v 32bitovém procesu) 4 -2,147,483,648 2,147,483,647
System.IntPtr (v 64bitovém procesu) 8 -9,223,372,036,854,775,808 9,223,372,036,854,775,807

Celočíselné typy bez znaménka

Typ Velikost (v bajtech) Minimální hodnota Maximální hodnota
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 (v 32bitovém procesu) 4 0 4,294,967,295
System.UIntPtr (v 64bitovém procesu) 8 0 18,446,744,073,709,551,615

Každý celočíselný typ podporuje sadu standardních aritmetických operátorů. Třída System.Math poskytuje metody pro širší sadu matematických funkcí.

Pomocí třídy můžete také pracovat s jednotlivými bity v celočíselné hodnotě System.BitConverter .

Poznámka:

Nepodepsané celočíselné typy nejsou kompatibilní se specifikací CLS. Další informace naleznete v tématu Jazyková nezávislost a komponenty nezávislé na jazyce.

BigInteger

Struktura System.Numerics.BigInteger je neměnný typ, který představuje libovolně velké celé číslo, jehož hodnota teoreticky nemá žádné horní nebo dolní hranice. Metody typu BigInteger úzce paralelně kopírují metody ostatních integrálních typů.

Datové typy s plovoucí tečkou

.NET obsahuje následující typy s plovoucí desetinou čárkou:

Typ Velikost (v bajtech) Přibližný rozsah Primitivní? Poznámky
System.Half 2 ±65504 Ne Představeno v .NET 5
System.Single 4 ±3,4 x 1038 Ano
System.Double 8 ±1,7 × 10308 Ano
System.Decimal 16 ±7,9228 x 1028 Ne

, HalfSinglea Double typy podporují speciální hodnoty, které představují nečíslo a nekonečno. Double Například typ poskytuje následující hodnoty: Double.NaN, Double.NegativeInfinitya Double.PositiveInfinity. K otestování těchto speciálních hodnot použijete metodu Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinitya Double.IsNegativeInfinity metody.

Každý typ s plovoucí čárkou podporuje sadu standardních aritmetických operátorů. Třída System.Math poskytuje metody pro širší sadu matematických funkcí. .NET Core 2.0 a novější obsahuje System.MathF třídu, která poskytuje metody, které přijímají argumenty Single typu.

Pomocí třídy Double můžete také pracovat s jednotlivými bity v hodnotách Single, Half, a System.BitConverter. Struktura System.Decimal má své vlastní metody, Decimal.GetBits a Decimal(Int32[]), pro práci s jednotlivými bity desetinné hodnoty, stejně jako vlastní sadu metod pro provádění některých dalších matematických operací.

Double, Singlea Half typy jsou určeny k použití pro hodnoty, které jsou podle jejich povahy nepřesné (například vzdálenost mezi dvěma hvězdičky) a pro aplikace, ve kterých není vyžadována vysoká míra přesnosti a malá chyba zaokrouhlování. Použijte typ System.Decimal pro případy, kdy je vyžadována větší přesnost a zaokrouhlování chyb by se mělo minimalizovat.

Poznámka:

Typ Decimal neodstraní potřebu zaokrouhlování. Minimalizuje chyby způsobené zaokrouhlováním.

Složitý

Struktura System.Numerics.Complex představuje komplexní číslo, tj. číslo s reálnou číselnou částí a imaginární číselnou částí. Podporuje standardní sadu aritmetických, porovnávaných, rovnosti, explicitních a implicitních konverzních operátorů a také matematických, algebraických a trigonometrických metod.

Typy s povoleným SIMD

Obor System.Numerics názvů obsahuje sadu typů s podporou .NET SIMD. Operace SIMD (Single Instruction Multiple Data) je možné paralelizovat na úrovni hardwaru. To zvyšuje propustnost vektorizovaných výpočtů, které jsou běžné v matematických, vědeckých a grafických aplikacích.

Typy s podporou .NET SIMD zahrnují následující:

  • Vector2, Vector3a Vector4 typy, které představují vektory s hodnotami 2, 3 a 4Single.

  • Dva typy matice, Matrix3x2které představují 3x2 matice, a Matrix4x4, který představuje 4x4 matice.

  • Typ Plane , který představuje rovinu v trojrozměrném prostoru.

  • Typ Quaternion , který představuje vektor, který se používá ke kódování trojrozměrných fyzických otočení.

  • Typ Vector<T> , který představuje vektor zadaného číselného typu a poskytuje širokou sadu operátorů, které využívají podporu SIMD. Počet Vector<T> instancí je pevný, ale jeho hodnota Vector<T>.Count závisí na procesoru počítače, na kterém se kód spouští.

    Poznámka:

    Typ Vector<T> je součástí .NET Core a .NET 5 nebo novější, ale ne rozhraní .NET Framework. Pokud používáte rozhraní .NET Framework, nainstalujte balíček NuGet System.Numerics.Vectors , abyste získali přístup k tomuto typu.

Typy s podporou SIMD jsou implementovány takovým způsobem, aby bylo možné je použít s hardwarem bez podpory SIMD nebo kompilátory JIT. Aby bylo možné využít instrukce SIMD, musí být vaše 64bitové aplikace spuštěny modulem runtime, který používá kompilátor RyuJIT, který je součástí .NET Core a v rozhraní .NET Framework 4.6 a novějších verzích. Přidává podporu SIMD při cílení na 64bitové procesory.

Další informace najdete v tématu Použití číselných typů akcelerovaných pomocí SIMD.

Viz také