Číslovky v technologii .NET
.NET poskytuje rozsah číselných celých čísel a primitiv s plovoucí desetinou čárkou a také:
- System.Half, který představuje číslo s plovoucí desetinnou čárkou s poloviční přesností.
- System.Decimal, který představuje desetinné číslo s plovoucí desetinnou čárkou.
- System.Numerics.BigInteger, což je celočíselný typ bez teoretické horní nebo dolní hranice.
- System.Numerics.Complex, který představuje komplexní čísla.
- Sada typů s podporou SIMD v System.Numerics oboru názvů.
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 | 0 | -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 | 0 | 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 BigInteger typu úzce paralelně paralelně metody ostatních integrálních typů.
Typy s plovoucí desetinou čárkou
.NET obsahuje následující typy s plovoucí desetinou čárkou:
Typ | Velikost (v bajtech) | Přibližný rozsah | Primitivní? | Notes |
---|---|---|---|---|
System.Half | 2 | ±65504 | No | 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 | No |
, 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í desetinou čá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 můžete také pracovat s jednotlivými bity v DoubleSingle, a Half hodnotamiSystem.BitConverter. Struktura System.Decimal má své vlastní metody a Decimal.GetBitsDecimal(Int32[]), pro práci s jednotlivými bity desetinné hodnoty a také 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í. System.Decimal Použijte typ pro případy, kdy je vyžadována větší přesnost a zaokrouhlování chyb by se měly minimalizovat.
Poznámka:
Typ Decimal neodstraní potřebu zaokrouhlování. Místo toho minimalizuje chyby způsobené zaokrouhlení.
Complex
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 je bylo možné použít s hardwarem s podporou 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.