Udostępnij za pośrednictwem


Wartości numeryczne na platformie .NET

Platforma .NET udostępnia szereg liczb całkowitych i zmiennoprzecinkowych elementów pierwotnych, a także:

Typy całkowite

Platforma .NET obsługuje zarówno podpisane, jak i niepodpisane 8-bitowe, 16-bitowe, 32-bitowe, 64-bitowe i 128-bitowe typy całkowite, które są wymienione w poniższych tabelach.

Podpisane typy liczb całkowitych

Typ Rozmiar (w bajtach) Wartość minimalna Wartość maksymalna
System.Int16 2 -32,768 32 767
System.Int32 100 -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 (w procesie 32-bitowym) 100 -2,147,483,648 2,147,483,647
System.IntPtr (w procesie 64-bitowym) 8 -9,223,372,036,854,775,808 9,223,372,036,854,775,807

Niepodpisane typy liczb całkowitych

Typ Rozmiar (w bajtach) Wartość minimalna Wartość maksymalna
System.Byte 1 0 255
System.UInt16 2 0 65,535
System.UInt32 100 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 (w procesie 32-bitowym) 100 0 4,294,967,295
System.UIntPtr (w procesie 64-bitowym) 8 0 18,446,744,073,709,551,615

Każdy typ liczb całkowitych obsługuje zestaw standardowych operatorów arytmetycznych. Klasa System.Math udostępnia metody szerszego zestawu funkcji matematycznych.

Można również pracować z poszczególnymi bitami w wartości całkowitej System.BitConverter przy użyciu klasy .

Uwaga

Niepodpisane typy liczb całkowitych nie są zgodne ze specyfikacją CLS. Aby uzyskać więcej informacji, zobacz Niezależność języka i składniki niezależne od języka.

BigInteger

Struktura System.Numerics.BigInteger jest niezmiennym typem reprezentującym dowolnie dużą liczbę całkowitą, której wartość teoretycznie nie ma granic górnych ani dolnych. Metody BigInteger typu ściśle równoległe te z innych typów całkowitych.

Typy zmiennoprzecinkowe

Platforma .NET obejmuje następujące typy zmiennoprzecinkowe:

Typ Rozmiar (w bajtach) Przybliżony zakres Pierwotnych? Uwagi
System.Half 2 ±65504 Nie. Wprowadzone na platformie .NET 5
System.Single 100 ±3,4 x 1038 Tak
System.Double 8 ±1.7 × 10308 Tak
System.Decimal 16 ±7.9228 x 1028 Nie.

Typy Half, Singlei Double obsługują specjalne wartości, które reprezentują nienumer i nieskończoność. Na przykład Double typ zawiera następujące wartości: Double.NaN, Double.NegativeInfinityi Double.PositiveInfinity. Metody , , Double.IsInfinityDouble.IsPositiveInfinityi służą Double.IsNegativeInfinity do testowania Double.IsNaNpod kątem tych specjalnych wartości.

Każdy typ zmiennoprzecinkowa obsługuje zestaw standardowych operatorów arytmetycznych. Klasa System.Math udostępnia metody szerszego zestawu funkcji matematycznych. Platforma .NET Core 2.0 lub nowsza zawiera klasę System.MathF , która udostępnia metody akceptujące argumenty Single typu.

Możesz również pracować z poszczególnymi bitami w Doublewartościach , Singlei Half przy użyciu System.BitConverter klasy . Struktura System.Decimal ma własne metody Decimal.GetBits i Decimal(Int32[]), do pracy z poszczególnymi bitami wartości dziesiętnej, a także z własnym zestawem metod wykonywania dodatkowych operacji matematycznych.

Typy Double, Singlei Half mają być używane dla wartości, które z ich natury są nieprecyzyjne (na przykład odległość między dwiema gwiazdami) i dla aplikacji, w których nie jest wymagany wysoki stopień dokładności i małego błędu zaokrąglania. System.Decimal Użyj typu w przypadkach, w których wymagana jest większa precyzja, a błędy zaokrąglania powinny być zminimalizowane.

Uwaga

Typ Decimal nie eliminuje potrzeby zaokrąglania. Zamiast tego minimalizuje błędy z powodu zaokrąglania.

Complex

Struktura System.Numerics.Complex reprezentuje liczbę zespolona, czyli liczbę z częścią liczbową rzeczywistą i częścią wyimaginowaną. Obsługuje standardowy zestaw arytmetycznych, porównawczych, równości, jawnych i niejawnych operatorów konwersji, a także metod matematycznych, algebraicznych i trygonometrycznych.

Typy obsługujące technikę SIMD

System.Numerics Przestrzeń nazw zawiera zestaw typów z obsługą simD platformy .NET. Operacje SIMD (pojedynczej instrukcji wiele danych) można zrównoleglizować na poziomie sprzętu. Zwiększa to przepływność wektoryzowanych obliczeń, które są wspólne w aplikacjach matematycznych, naukowych i graficznych.

Typy z obsługą simD platformy .NET obejmują następujące elementy:

  • Typy Vector2, Vector3i Vector4 reprezentujące wektory z wartościami 2, 3 i 4 Single .

  • Dwa typy macierzy, Matrix3x2, które reprezentują macierz 3x2, i Matrix4x4, które reprezentują macierz 4x4.

  • Plane Typ, który reprezentuje płaszczyznę w trójwymiarowej przestrzeni.

  • Quaternion Typ, który reprezentuje wektor używany do kodowania trójwymiarowych rotacji fizycznych.

  • Typ Vector<T> , który reprezentuje wektor określonego typu liczbowego i zapewnia szeroki zestaw operatorów, które korzystają z obsługi SIMD. Liczba wystąpień Vector<T> jest stała, ale jej wartość Vector<T>.Count zależy od procesora CPU maszyny, na której jest wykonywany kod.

    Uwaga

    Typ Vector<T> jest dołączany do programów .NET Core i .NET 5+, ale nie .NET Framework. Jeśli używasz programu .NET Framework, zainstaluj pakiet NuGet System.Numerics.Vectors , aby uzyskać dostęp do tego typu.

Typy z obsługą simD są implementowane w taki sposób, że mogą być używane z nieobsługiowanym sprzętem lub kompilatorami JIT z obsługą JIT. Aby korzystać z instrukcji SIMD, aplikacje 64-bitowe muszą być uruchamiane przez środowisko uruchomieniowe korzystające z kompilatora RyuJIT, który jest zawarty w programie .NET Core i w wersjach .NET Framework 4.6 i nowszych. Dodaje obsługę SIMD podczas określania wartości docelowych dla procesorów 64-bitowych.

Aby uzyskać więcej informacji, zobacz Używanie przyspieszonych typów liczbowych SIMD.

Zobacz też