Numerische Ausdrücke in .NET Framework

.NET Framework unterstützt die standardmäßigen numerischen Ganzzahlen und Gleitkomma-Primitive sowie BigInteger, ein ganzzahliger Typ ohne theoretische obere oder untere Grenze, Complex, einen komplexe Zahlen darstellenden Typ, und eine Reihe von SIMD-fähigen Vektortypen im System.Numerics-Namespace.

Darüber hinaus wurde „System.Numerics.Vectors“, die Bibliothek SIMD-fähiger Vektortypen, als NuGet-Paket veröffentlicht.

Ganzzahlige Typen

Das .NET Framework unterstützt Ganzzahlen mit und ohne Vorzeichen mit Längen von einem bis zu acht Byte. In der folgenden Tabelle werden die ganzzahligen Typen und deren Größen aufgelistet, es wird angegeben oder sie Vorzeichen aufweisen, und der Bereich wird dokumentiert. Alle Ganzzahlen sind Werttypen.

Typ Mit/ohne Vorzeichen Größe (Byte) Minimalwert Maximalwert
System.Byte Ohne Vorzeichen 1 0 255
System.Int16 Signiert 2 -32,768 32,767
System.Int32 Signiert 4 -2,147,483,648 2,147,483,647
System.Int64 Signiert 8 -9,223,372,036,854,775,808 9,223,372,036,854,775,807
System.SByte Signiert 1 -128 127
System.UInt16 Ohne Vorzeichen 2 0 65,535
System.UInt32 Ohne Vorzeichen 4 0 4,294,967,295
System.UInt64 Ohne Vorzeichen 8 0 18,446,744,073,709,551,615

Jeder ganzzahlige Typ unterstützt einen Standardsatz an Operatoren (arithmetisch, Vergleich, Gleichheit, explizite Konvertierung und implizite Konvertierung). Jede Ganzzahl weist darüber hinaus auch Methoden für die Durchführung von Gleichheitsvergleichen und relativen Vergleichen auf, um die Zeichenfolgendarstellung einer Zahl in diese Ganzzahl und eine Ganzzahl in die entsprechende Zeichenfolgendarstellung konvertieren zu können. Einige zusätzliche mathematische Operationen über diejenigen hinaus, die von den Standardoperatoren verarbeitet werden, wie Runden oder Erkennen des kleineren oder größeren Werts zweier Ganzzahlen stehen über die Math-Klasse bereit. Sie können auch mit den einzelnen Bit in einem ganzzahligen Wert arbeiten, indem Sie die BitConverter-Klasse verwenden.

Beachten Sie das ganzzahlige Typen ohne Vorzeichen nicht CLS-kompatibel sind. Weitere Informationen finden Sie unter Sprachenunabhängigkeit und sprachunabhängige Komponenten.

Gleitkommatypen

Das .NET Framework enthält drei primitive Gleitkommatypen, die in der folgenden Tabelle aufgeführt sind.

Typ Größe (in Bytes) Minimum Maximum
System.Double 8 -1.79769313486232e308 1.79769313486232e308
System.Single 4 -3.402823e38 3.402823e38
System.Decimal 16 -79,228,162,514,264,337,593,543,950,335 79,228,162,514,264,337,593,543,950,335

Jeder Gleitkommatyp unterstützt einen Standardsatz an Operatoren (arithmetisch, Vergleich, Gleichheit, explizite Konvertierung und implizite Konvertierung). Jeder Typ weist darüber hinaus auch Methoden für die Durchführung von Gleichheitsvergleichen und relativen Vergleichen auf, um die Zeichenfolgendarstellung einer Zahl in eine Gleitkommazahl und eine Gleitkommazahl in die entsprechende Zeichenfolgendarstellung konvertieren zu können. Einige weitere mathematische, algebraische und trigonometrische Operationen werden von der Math-Klasse bereitgestellt. Sie können auch mit den einzelnen Bit in Double- und Single-Werten arbeiten, indem Sie die BitConverter-Klasse verwenden. Die System.Decimal-Struktur verfügt über eigene Methoden, Decimal.GetBits und Decimal.Decimal(Int32[]), um mit den einzelnen Bit eines Dezimalwerts zu arbeiten, und sie verfügt über einen eigenen Satz an Methoden für die Durchführung einiger zusätzlicher mathematischer Operationen.

Die Typen Double und Single sind dazu gedacht, für Werte verwendet zu werden, die von Natur aus unpräzise sind (wie der Abstand zwischen zwei Sternen im Sonnensystem), und für Anwendungen, in denen kein hoher Genauigkeitsgrad mit geringen Rundungsfehlern nicht erforderlich ist. Sie sollten den System.Decimal-Typ in Fällen verwenden, in denen eine höhere Genauigkeit erforderlich ist und Rundungsfehler unerwünscht sind.

BigInteger

System.Numerics.BigInteger ist ein unveränderlicher Typ, der eine beliebig große ganze Zahl darstellt, dessen Wert theoretisch keine oberen und unteren Grenzen hat. Die Methoden des BigInteger-Typs ähneln im Wesentlichen denen der anderen ganzzahligen Typen.

Komplex

Der Typ Complex steht für eine komplexe Zahl, d. h., für eine Zahl mit einem reellen und einem imaginären Teil. Er unterstützt einen Standardsatz an Operatoren (arithmetisch, Vergleich, Gleichheit, explizite Konvertierung und implizite Konvertierung) sowie mathematische, algebraische und trigonometrische Methoden.

SIMD-fähige Vektortypen

Der System.Numerics-Namespace umfasst einen Satz an SIMD-fähigen Vektortypen für .NET Framework. SIMD-Operationen (Single Instruction Multiple Data) ermöglichen es, einige Operationen auf der Hardwareebene zu parallelisieren, was in mathematischen, wissenschaftlichen und grafischen Apps, die Berechnungen über Vektoren ausführen, zu einer enormen Leistungsverbesserung führt.

Die SIMD-fähigen Vektortypen in .NET Framework umfassen Folgendes:. Darüber hinaus enthält „System.Numerics.Vectors“ einen Plane- und einen Quaternion-Typ.

Die SIMD-fähigen Vektortypen werden in IL implementiert, wodurch es möglich ist, sie auch auf nicht SIMD-fähiger Hardware und in Verbindung mit JIT-Compilern zu verwenden. Um SIMD-Anweisungen nutzen zu können, müssen die 64-Bit-Apps mit dem neuen 64-Bit-JIT-Compiler für verwalteten Code kompiliert werden, der in .NET Framework 4.6 enthalten ist. Er fügt die SIMD-Unterstützung hinzu, wenn x64-Prozessoren das Ziel sind.

SIMD kann auch als NuGet-Paket heruntergeladen werden. Das NuGET-Paket umfasst auch eine generische Vector<T>-Struktur, mit der Sie einen Vektor eines beliebigen primitiven numerischen Typs erstellen können. (Zu den primitiven numerischen Typen gehören alle numerischen Typen im System-Namespace außer Decimal). Darüber hinaus stellt die Vector<T>-Struktur eine Bibliothek von Hilfsmethoden bereit, die Sie bei der Arbeit mit Vektoren aufrufen können.

Siehe auch

Grundlagen der Anwendung