Share via


Numerieke waarden in .NET

.NET biedt een reeks numerieke gehele getallen en primitieven met drijvende komma, evenals:

Typen gehele getallen

.NET ondersteunt zowel ondertekende als niet-ondertekende typen 8-bits, 16-bits, 32-bits, 64-bits en 128-bits gehele getallen, die worden vermeld in de volgende tabellen.

Typen ondertekende gehele getallen

Type Grootte (in bytes) Minimumwaarde Maximale waarde
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 (in 32-bits proces) 4 -2,147,483,648 2,147,483,647
System.IntPtr (in 64-bits proces) 8 -9,223,372,036,854,775,808 9,223,372,036,854,775,807

Niet-ondertekende gehele getallen

Type Grootte (in bytes) Minimumwaarde Maximale waarde
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 (in 32-bits proces) 4 0 4,294,967,295
System.UIntPtr (in 64-bits proces) 8 0 18,446,744,073,709,551,615

Elk type geheel getal ondersteunt een set standaardberekeningsoperatoren. De System.Math klasse biedt methoden voor een bredere set wiskundige functies.

U kunt ook met de afzonderlijke bits in een geheel getal werken met behulp van de System.BitConverter klasse.

Notitie

De niet-ondertekende gehele getallen zijn niet cls-compatibel. Zie Taalonafhankelijkheid en taalonafhankelijke onderdelen voor meer informatie.

BigInteger

De System.Numerics.BigInteger structuur is een onveranderbaar type dat een willekeurig groot geheel getal vertegenwoordigt waarvan de waarde in theorie geen boven- of ondergrens heeft. De methoden van het BigInteger type zijn nauw parallel aan de methoden van de andere integrale typen.

Typen drijvende komma

.NET bevat de volgende typen drijvende komma:

Type Grootte (in bytes) Bereik bij benadering Primitieve? Opmerkingen
System.Half 2 ±65504 Nee Geïntroduceerd in .NET 5
System.Single 4 ±3,4 x 1038 Ja
System.Double 8 ±1,7 × 10308 Ja
System.Decimal 16 ±7.9228 x 1028 Nee

De Half, Singleen Double typen ondersteunen speciale waarden die niet-een-getal en oneindigheid vertegenwoordigen. Het type bevat bijvoorbeeld Double de volgende waarden: Double.NaN, Double.NegativeInfinityen Double.PositiveInfinity. U gebruikt de Double.IsNaN, Double.IsInfinityen Double.IsPositiveInfinityDouble.IsNegativeInfinity methoden om te testen op deze speciale waarden.

Elk type drijvende komma ondersteunt een set standaard rekenkundige operatoren. De System.Math klasse biedt methoden voor een bredere set wiskundige functies. .NET Core 2.0 en hoger bevat de System.MathF klasse, die methoden biedt die argumenten van het Single type accepteren.

U kunt ook met de afzonderlijke bits in Double, Singleen Half waarden werken met behulp van de System.BitConverter klasse. De System.Decimal structuur heeft zijn eigen methoden Decimal.GetBits en Decimal(Int32[])voor het werken met de afzonderlijke bits van een decimale waarde, evenals een eigen set methoden voor het uitvoeren van extra wiskundige bewerkingen.

De Doubletypen , Singleen Half typen zijn bedoeld om te worden gebruikt voor waarden die, naar hun aard, onnauwkeurig zijn (bijvoorbeeld de afstand tussen twee sterren) en voor toepassingen waarin een hoge mate van precisie en kleine afrondingsfout niet vereist is. Gebruik het System.Decimal type voor gevallen waarin grotere precisie vereist is en afrondingsfouten moeten worden geminimaliseerd.

Notitie

Het Decimal type elimineert niet de noodzaak voor afronding. In plaats daarvan worden fouten geminimaliseerd vanwege afronding.

Complex

De System.Numerics.Complex structuur vertegenwoordigt een complex getal, dat wil gezegd, een getal met een reëel getal en een imaginair getaldeel. Het ondersteunt een standaardset rekenkundige, vergelijkings-, gelijkheids-, expliciete en impliciete conversieoperators, evenals wiskundige, algebraïsche en trigonometrische methoden.

SIMD-typen

De System.Numerics naamruimte bevat een set .NET SIMD-typen. SIMD-bewerkingen (Single Instruction Multiple Data) kunnen worden geparallelliseerd op hardwareniveau. Dit verhoogt de doorvoer van de gevectoriseerde berekeningen, die gebruikelijk zijn in wiskundige, wetenschappelijke en grafische apps.

De .NET SIMD-typen zijn onder andere:

  • De Vector2, Vector3en Vector4 typen, die vectoren vertegenwoordigen met 2, 3 en 4 Single waarden.

  • Twee matrixtypen, Matrix3x2die een 3x2-matrix vertegenwoordigen en Matrix4x4, die een 4x4-matrix vertegenwoordigt.

  • Het Plane type, dat een vlak in driedimensionale ruimte vertegenwoordigt.

  • Het Quaternion type, dat een vector vertegenwoordigt die wordt gebruikt om driedimensionale fysieke rotaties te coderen.

  • Het Vector<T> type, dat een vector van een opgegeven numeriek type vertegenwoordigt en een brede set operators biedt die profiteren van SIMD-ondersteuning. Het aantal exemplaren Vector<T> is vast, maar de waarde Vector<T>.Count ervan is afhankelijk van de CPU van de computer, waarop code wordt uitgevoerd.

    Notitie

    Het Vector<T> type is opgenomen in .NET Core en .NET 5+, maar niet .NET Framework. Als u .NET Framework gebruikt, installeert u het NuGet-pakket System.Numerics.Vectors om toegang te krijgen tot dit type.

De SIMD-typen worden zodanig geïmplementeerd dat ze kunnen worden gebruikt met hardware of JIT-compilers die niet met SIMD zijn ingeschakeld. Als u wilt profiteren van SIMD-instructies, moeten uw 64-bits apps worden uitgevoerd door de runtime die gebruikmaakt van de RyuJIT-compiler, die is opgenomen in .NET Core en in .NET Framework 4.6 en latere versies. Er wordt SIMD-ondersteuning toegevoegd bij het richten op 64-bits processors.

Zie SimD-versnelde numerieke typen gebruiken voor meer informatie.

Zie ook