Numerikus értékek a .NET-ben
A .NET numerikus egész számokat és lebegőpontos primitíveket, valamint a következőket biztosítja:
- System.Half, amely egy fél pontosságú lebegőpontos számot jelöl.
- System.Decimal, amely egy decimális lebegőpontos számot jelöl.
- System.Numerics.BigInteger, amely egy olyan integráltípus, amelynek nincs elméleti felső vagy alsó határa.
- System.Numerics.Complex, amely összetett számokat jelöl.
- SIMD-kompatibilis típusok készlete a System.Numerics névtérben.
Egész számtípusok
A .NET támogatja az aláírt és az aláíratlan 8 bites, 16 bites, 32 bites, 64 bites és 128 bites egész számtípusokat is, amelyek az alábbi táblázatokban szerepelnek.
Aláírt egész számtípusok
Típus | Méret (bájtban) | Minimális érték | Maximális érték |
---|---|---|---|
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 (32 bites folyamatban) | 4 | -2,147,483,648 | 2,147,483,647 |
System.IntPtr (64 bites folyamatban) | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
Aláíratlan egész számok típusai
Típus | Méret (bájtban) | Minimális érték | Maximális érték |
---|---|---|---|
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 (32 bites folyamatban) | 4 | 0 | 4,294,967,295 |
System.UIntPtr (64 bites folyamatban) | 8 | 0 | 18,446,744,073,709,551,615 |
Minden egész számtípus szabványos számtani operátorokat támogat. Az System.Math osztály metódusokat biztosít a matematikai függvények szélesebb köréhez.
Az egyes bitekkel egész számértékben is dolgozhat az System.BitConverter osztály használatával.
Feljegyzés
Az aláíratlan egész számtípusok nem CLS-kompatibilisek. További információ: A nyelv függetlensége és a nyelvfüggetlen összetevők.
BigInteger
A System.Numerics.BigInteger struktúra egy megváltoztathatatlan típus, amely tetszőlegesen nagy egész számot jelöl, amelynek elméleti értéke nem rendelkezik felső vagy alsó határokkal. A típus módszerei szorosan párhuzamosak a többi integráltípuséval BigInteger .
Lebegőpontos típusok
A .NET a következő lebegőpontos típusokat tartalmazza:
Típus | Méret (bájtban) | Hozzávetőleges tartomány | Primitív? | Jegyzetek |
---|---|---|---|---|
System.Half | 2 | ±65504 | Nem | Bevezetés a .NET 5-be |
System.Single | 4 | ±3.4 x 1038 | Igen | |
System.Double | 8 | ±1.7 × 10308 | Igen | |
System.Decimal | 16 | ±7.9228 x 1028 | Nem |
A Half, Singleés Double típusok olyan speciális értékeket támogatnak, amelyek nem számokat és végtelent jelölnek. A típus például a Double következő értékeket adja meg: Double.NaN, Double.NegativeInfinityés Double.PositiveInfinity. Double.IsNaNA , , Double.IsInfinityDouble.IsPositiveInfinityés Double.IsNegativeInfinity metódusokkal tesztelheti ezeket a speciális értékeket.
Minden lebegőpontos típus támogatja a standard aritmetikai operátorok készletét. Az System.Math osztály metódusokat biztosít a matematikai függvények szélesebb köréhez. A .NET Core 2.0-s és újabb verziói tartalmazzák az System.MathF osztályt, amely olyan metódusokat biztosít, amelyek elfogadják a Single típus argumentumait.
Az osztály használatával System.BitConverter az egyes bitekkel HalfDoubleSingleés értékekkel is dolgozhat. A System.Decimal struktúra saját metódusokkal rendelkezik, Decimal.GetBits és Decimal(Int32[])a decimális értékek egyéni bitjeinek használatához, valamint saját metóduskészlettel rendelkezik néhány további matematikai művelet végrehajtásához.
A Double, Singleés Half típusok olyan értékekhez használhatók, amelyek természetüknél fogva pontatlanok (például két csillag közötti távolság), valamint olyan alkalmazásokhoz, amelyekben nem szükséges nagy pontosságú és kis kerekítési hiba. Használja a System.Decimal típust olyan esetekben, amikor nagyobb pontosságra van szükség, és a kerekítési hibákat minimalizálni kell.
Feljegyzés
A Decimal típus nem szünteti meg a kerekítés szükségességét. Ehelyett a kerekítés miatti hibákat minimalizálja.
Complex
A System.Numerics.Complex struktúra egy összetett számot, azaz egy valós számrészt és egy képzeletbeli számrészt jelöl. Támogatja az aritmetikai, összehasonlítási, egyenlőségi, explicit és implicit konverziós operátorok, valamint matematikai, algebrai és trigonometriai módszerek standard készletét.
SIMD-kompatibilis típusok
A System.Numerics névtér .NET SIMD-kompatibilis típusok készletét tartalmazza. A SIMD (single instruction multiple data) műveletek hardverszinten párhuzamosak lehetnek. Ez növeli a vektoros számítások átviteli sebességét, amelyek gyakoriak a matematikai, tudományos és grafikus alkalmazásokban.
A .NET SIMD-kompatibilis típusok a következők:
A Vector22, 3 és Vector4 4 Single értékkel rendelkező vektorokat ábrázoló , Vector3és típusok.
Két mátrixtípus, Matrix3x2amely egy 3x2-es mátrixot, és Matrix4x4egy 4x4-es mátrixot jelöl.
Az a Plane típus, amely egy síkot jelöl a háromdimenziós térben.
A Quaternion típus, amely egy vektort jelöl, amely háromdimenziós fizikai forgások kódolására szolgál.
A Vector<T> típus, amely egy adott numerikus típus vektorát jelöli, és a SIMD-támogatás előnyeit élvező operátorok széles halmazát biztosítja. A példányok száma Vector<T> javítva van, de az értéke Vector<T>.Count a gép processzorától függ, amely alapján a kód végrehajtásra kerül.
Feljegyzés
A Vector<T> típus a .NET Core és a .NET 5+ része, de nem .NET-keretrendszer. Ha .NET-keretrendszer használ, telepítse a System.Numerics.Vectors NuGet csomagot, hogy hozzáférjen ehhez a típushoz.
A SIMD-kompatibilis típusok úgy vannak implementálva, hogy nem SIMD-kompatibilis hardverekkel vagy JIT-fordítókkal is használhatók legyenek. A SIMD-utasítások használatához a 64 bites alkalmazásokat a RyuJIT fordítót használó futtatókörnyezetnek kell futtatnia, amely a .NET Core-ban és a .NET-keretrendszer 4.6-os és újabb verziókban található. SIMD-támogatást ad a 64 bites processzorok megcélzásához.
További információ: SIMD-gyorsított numerikus típusok használata.