Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Platforma .NET udostępnia szereg prymitywnych typów liczbowych całkowitych i zmiennoprzecinkowych, a także:
- System.Half, który reprezentuje liczbę zmiennoprzecinkową o pół precyzji.
- System.Decimal, który reprezentuje liczbę zmiennoprzecinkową dziesiętną.
- System.Numerics.BigInteger, który jest typem całkowitym bez teoretycznej górnej lub dolnej granicy.
- System.Numerics.Complex, który reprezentuje liczby zespolone.
- Zestaw typów z obsługą SIMD w przestrzeni nazw System.Numerics.
Typy liczb całkowitych
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 | 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 (w procesie 32-bitowym) | 4 | -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 | 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 (w procesie 32-bitowym) | 4 | 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, za pomocą klasy System.BitConverter.
Uwaga / Notatka
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 typu BigInteger ściśle odpowiadają tym z innych typów całkowitych.
Typy zmiennoprzecinkowe
Platforma .NET obejmuje następujące typy zmiennoprzecinkowe:
Typ | Rozmiar (w bajtach) | Przybliżony zakres | Prymitywny? | Notatki |
---|---|---|---|---|
System.Half | 2 | ±65504 | Nie. | Wprowadzone w platformie .NET 5 |
System.Single | 4 | ±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. Używasz metod Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinity i Double.IsNegativeInfinity do testowania pod kątem tych specjalnych wartości.
Każdy typ zmiennoprzecinkowy 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 Double, Single i Half przy użyciu klasy System.BitConverter. 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 / Notatka
Typ Decimal nie eliminuje potrzeby zaokrąglania. Zamiast tego minimalizuje błędy wynikające z zaokrąglania.
Kompleks
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 platformy .NET z obsługą SIMD. Operacje SIMD (pojedynczej instrukcji-wiele danych) można zrównoleglić 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 typy:
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 / Notatka
Typ Vector<T> jest dołączany do programów .NET Core i .NET 5+, ale nie .NET Framework. Jeśli używasz .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 ze sprzętem bez obsługi SIMD lub kompilatorami 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 przy celowaniu w procesory 64-bitowe.
Aby uzyskać więcej informacji, zobacz Używanie przyspieszonych typów liczbowych SIMD.