Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
.NET bietet ein Spektrum numerischer ganzzahliger und Gleitkomma-Datentypen sowie:
- System.Half, die eine Gleitkommazahl mit halber Genauigkeit darstellt.
- System.Decimal, die eine dezimale Gleitkommazahl darstellt.
- System.Numerics.BigInteger, bei dem es sich um einen integralen Typ ohne theoretische obere oder untere Grenze handelt.
- System.Numerics.Complex, die komplexe Zahlen darstellt.
- Eine Reihe von SIMD-fähigen Typen im System.Numerics Namespace.
Ganzzahltypen
.NET unterstützt signierte und nicht signierte 8-Bit-, 16-Bit-, 32-Bit-, 64-Bit- und 128-Bit-Ganzzahltypen, die in den folgenden Tabellen aufgeführt sind.
Ganzzahlige Typen mit Vorzeichen
| Typ | Größe (in Bytes) | Minimalwert | Maximalwert |
|---|---|---|---|
| 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 (im 32-Bit-Prozess) | 4 | -2,147,483,648 | 2\.147.483.647 |
| System.IntPtr (im 64-Bit-Prozess) | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
Nicht signierte ganzzahlige Typen
| Typ | Größe (in Bytes) | Minimalwert | Maximalwert |
|---|---|---|---|
| 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 (im 32-Bit-Prozess) | 4 | 0 | 4,294,967,295 |
| System.UIntPtr (im 64-Bit-Prozess) | 8 | 0 | 18,446,744,073,709,551,615 |
Jeder ganzzahlige Typ unterstützt eine Reihe von standardmäßigen arithmetischen Operatoren. Die System.Math Klasse stellt Methoden für eine breitere Gruppe mathematischer Funktionen bereit.
Sie können auch mit den einzelnen Bits in einem ganzzahligen Wert arbeiten, indem Sie die System.BitConverter Klasse verwenden.
Hinweis
Die nicht signierten ganzzahligen Typen sind nicht CLS-kompatibel. Weitere Informationen finden Sie unter Sprachunabhängigkeit und sprachunabhängige Komponenten.
BigInteger
Die System.Numerics.BigInteger Struktur ist ein unveränderlicher Typ, der eine beliebig große ganze Zahl darstellt, deren Wert theoretisch keine oberen oder unteren Grenzen aufweist. Die Methoden des BigInteger-Typs entsprechen denen der anderen integralen Typen.
Gleitkommatypen
.NET enthält die folgenden Gleitkommatypen:
| Typ | Größe (in Bytes) | Ungefährer Bereich | Primitiv? | Hinweise |
|---|---|---|---|---|
| System.Half | 2 | ±65504 | Nein | Eingeführt 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 | Nein |
Die Half, Singleund Double Typen unterstützen spezielle Werte, die keine Zahl und Unendlichkeit darstellen. Der Typ stellt z. B. Double die folgenden Werte bereit: Double.NaN, Double.NegativeInfinity und Double.PositiveInfinity. Sie verwenden die Methoden Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinity und Double.IsNegativeInfinity, um diese speziellen Werte zu testen.
Jeder Gleitkommatyp unterstützt eine Reihe von standardmäßigen arithmetischen Operatoren. Die System.Math Klasse stellt Methoden für eine breitere Gruppe mathematischer Funktionen bereit. .NET Core 2.0 und höher enthält die System.MathF Klasse, die Methoden bereitstellt, die Argumente des Single Typs akzeptieren.
Sie können auch mit den einzelnen Bits in Double, Singleund Half Werten arbeiten, indem Sie die System.BitConverter Klasse verwenden. Die System.Decimal Struktur verfügt über eigene Methoden Decimal.GetBits und Decimal(Int32[]), um mit den einzelnen Bits eines Dezimalwerts zu arbeiten, sowie über eigene Methoden zum Ausführen zusätzlicher mathematischer Vorgänge.
Die Typen Double, Single und Half sind dazu gedacht, für Werte verwendet zu werden, die von Natur aus ungenau sind (z. B. der Abstand zwischen zwei Sternen) und für Anwendungen, bei denen ein hoher Genauigkeitsgrad und ein geringer Rundungsfehler nicht erforderlich sind. Verwenden Sie den System.Decimal Typ für Fälle, in denen eine höhere Genauigkeit erforderlich ist, und Rundenfehler sollten minimiert werden.
Hinweis
Der Decimal Typ beseitigt nicht die Notwendigkeit der Rundung. Vielmehr werden Fehler, die durch Rundungen entstehen, minimiert.
Komplex
Die System.Numerics.Complex Struktur stellt eine komplexe Zahl dar, d. h. eine Zahl mit einem reellen Zahlenteil und einen imaginären Zahlenteil. Es unterstützt einen Standardsatz von arithmetischen, Vergleichs-, Gleichheits-, expliziten und impliziten Konvertierungsoperatoren sowie mathematischen, algebraischen und trigonometrischen Methoden.
SIMD-fähige Typen
Der System.Numerics Namespace enthält eine Reihe von .NET SIMD-fähigen Typen. SIMD-Vorgänge (Single Instruction Multiple Data) können auf Hardwareebene parallelisiert werden. Dies erhöht den Durchsatz der vektorisierten Berechnungen, die in mathematischen, wissenschaftlichen und Grafik-Apps üblich sind.
Die .NET SIMD-fähigen Typen umfassen Folgendes:
Die Vector2, Vector3, und Vector4 Typen, die Vektoren mit 2, 3 und 4 Single Werten darstellen.
Zwei Matrixtypen, Matrix3x2die eine 3x2-Matrix darstellen, und Matrix4x4, die eine 4x4-Matrix darstellt.
Der Plane Typ, der eine Ebene im dreidimensionalen Raum darstellt.
Der Quaternion Typ, der einen Vektor darstellt, der zum Codieren dreidimensionaler physischer Drehungen verwendet wird.
Der Vector<T> Typ, der einen Vektor eines angegebenen numerischen Typs darstellt und einen breiten Satz von Operatoren bereitstellt, die von SIMD-Unterstützung profitieren. Die Anzahl einer Vector<T> Instanz ist fest, aber ihr Wert Vector<T>.Count hängt von der CPU des Computers ab, auf der code ausgeführt wird.
Hinweis
Der Vector<T> Typ ist in .NET Core und .NET 5+ enthalten, aber nicht .NET Framework. Wenn Sie .NET Framework verwenden, installieren Sie das NuGet-Paket "System.Numerics.Vectors ", um Zugriff auf diesen Typ zu erhalten.
Die SIMD-fähigen Typen werden so implementiert, dass sie mit nicht SIMD-fähigen Hardware- oder JIT-Compilern verwendet werden können. Um SIMD-Anweisungen nutzen zu können, müssen Ihre 64-Bit-Apps von der Laufzeit ausgeführt werden, die den RyuJIT-Compiler verwendet, der in .NET Core und in .NET Framework 4.6 und höheren Versionen enthalten ist. Sie fügt SIMD-Unterstützung hinzu, wenn sie auf 64-Bit-Prozessoren ausgerichtet ist.
Weitere Informationen finden Sie unter Verwenden von SIMD-beschleunigten numerischen Typen.