Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
.NET tillhandahåller ett antal numeriska heltal och flyttalsprimärer samt:
- System.Half, som representerar ett flyttal med halv precision.
- System.Decimal, som representerar ett flyttal med decimaltecken.
- System.Numerics.BigInteger, som är en integrerad typ utan teoretisk övre eller nedre gräns.
- System.Numerics.Complex, som representerar komplexa tal.
- En uppsättning SIMD-aktiverade typer i System.Numerics namnområdet.
Heltalstyper
.NET stöder både signerade och osignerade 8-bitars, 16-bitars, 32-bitars, 64-bitars och 128-bitars heltalstyper, som visas i följande tabeller.
Signerade heltalstyper
Typ | Storlek (i byte) | Minsta värde | Maximalt värde |
---|---|---|---|
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 (i 32-bitars process) | 4 | -2,147,483,648 | 2,147,483,647 |
System.IntPtr (i en 64-bitarsprocess) | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
Osignerade heltalstyper
Typ | Storlek (i byte) | Minsta värde | Maximalt värde |
---|---|---|---|
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 (i 32-bitars process) | 4 | 0 | 4,294,967,295 |
System.UIntPtr (i en 64-bitarsprocess) | 8 | 0 | 18,446,744,073,709,551,615 |
Varje heltalstyp stöder en uppsättning standardaritmetiska operatorer. Klassen System.Math innehåller metoder för en bredare uppsättning matematiska funktioner.
Du kan också arbeta med enskilda bitar i ett heltalsvärde med hjälp System.BitConverter av klassen .
Anmärkning
De osignerade heltalstyperna är inte CLS-kompatibla. Mer information finns i Språkoberoende och språkoberoende komponenter.
BigInteger
Strukturen System.Numerics.BigInteger är en oföränderlig typ som representerar ett godtyckligt stort heltal vars värde i teorin inte har några övre eller nedre gränser. Metoderna av typen BigInteger är nära parallella med metoderna för de andra integraltyperna.
Flyttalstyper
.NET innehåller följande flyttalstyper:
Typ | Storlek (i byte) | Ungefärligt intervall | Primitiv? | Noteringar |
---|---|---|---|---|
System.Half | 2 | ±65504 | Nej | Introducerades i .NET 5 |
System.Single | 4 | ±3,4 x 1038 | Ja | |
System.Double | 8 | ±1,7 × 10308 | Ja | |
System.Decimal | 16 | ±7.9228 x 1028 | Nej |
Typerna Half, Singleoch Double har stöd för specialvärden som representerar not-a-number och infinity. Typen innehåller till exempel Double följande värden: Double.NaN, Double.NegativeInfinityoch Double.PositiveInfinity. Du använder Double.IsNaNmetoderna , Double.IsInfinity, Double.IsPositiveInfinityoch Double.IsNegativeInfinity för att testa dessa specialvärden.
Varje flyttalstyp stöder en uppsättning standardaritmetiska operatorer. Klassen System.Math innehåller metoder för en bredare uppsättning matematiska funktioner. .NET Core 2.0 och senare innehåller System.MathF klassen, som innehåller metoder som accepterar argument av typen Single .
Du kan också arbeta med de enskilda bitarna i Double, Singleoch Half värden med hjälp System.BitConverter av klassen . Strukturen System.Decimal har egna metoder, Decimal.GetBits och Decimal(Int32[]), för att arbeta med ett decimalvärdes enskilda bitar, samt en egen uppsättning metoder för att utföra ytterligare matematiska åtgärder.
Typerna Double, Singleoch Half är avsedda att användas för värden som till sin natur är oprecisa (till exempel avståndet mellan två stjärnor) och för program där det inte krävs någon hög precision och ett litet avrundningsfel. Använd typen System.Decimal för fall där större precision krävs och avrundningsfel bör minimeras.
Anmärkning
Typen Decimal eliminerar inte behovet av avrundning. I stället minimeras felen till följd av avrundning.
Komplex
Strukturen System.Numerics.Complex representerar ett komplext tal, dvs. ett tal med en verklig taldel och en imaginär taldel. Den stöder en standarduppsättning aritmetiska, jämförelse-, likhets-, explicita och implicita konverteringsoperatorer, samt matematiska, algebraiska och trigonometriska metoder.
SIMD-aktiverade typer
Namnområdet System.Numerics innehåller en uppsättning .NET SIMD-aktiverade typer. SIMD-åtgärder (single instruction multiple data) kan parallelliseras på maskinvarunivå. Det ökar dataflödet för vektoriserade beräkningar, som är vanliga i matematiska, vetenskapliga och grafikappar.
De .NET SIMD-aktiverade typerna innehåller följande:
Typerna Vector2, Vector3och Vector4 , som representerar vektorer med värdena 2, 3 och 4 Single .
Två matristyper, Matrix3x2, som representerar en 3x2-matris och Matrix4x4, som representerar en 4x4-matris.
Typen Plane , som representerar ett plan i tredimensionellt utrymme.
Typen Quaternion , som representerar en vektor som används för att koda tredimensionella fysiska rotationer.
Typen Vector<T> , som representerar en vektor av en angiven numerisk typ och ger en bred uppsättning operatorer som har stöd för SIMD. Antalet instanser Vector<T> är fast, men dess värde Vector<T>.Count beror på datorns PROCESSOR, på vilken kod som körs.
Anmärkning
Typen Vector<T> ingår i .NET Core och .NET 5+, men inte .NET Framework. Om du använder .NET Framework installerar du NuGet-paketet System.Numerics.Vectors för att få åtkomst till den här typen.
DE SIMD-aktiverade typerna implementeras på ett sådant sätt att de kan användas med icke-SIMD-aktiverad maskinvara eller JIT-kompilatorer. För att kunna dra nytta av SIMD-instruktioner måste dina 64-bitarsappar köras av den körning som använder RyuJIT-kompilatorn, som ingår i .NET Core och i .NET Framework 4.6 och senare versioner. Det lägger till SIMD-stöd när du riktar in dig på 64-bitars processorer.
Mer information finns i Använda SIMD-accelererade numeriska typer.