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:

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.

Lásd még