.NET Core - Numerik

.NET Core unterstützt die standardmäßigen numerischen Integral- und Gleitkomma-Grundelemente. Es werden auch die folgenden Typen unterstützt:

  • System.Numerics.BigInteger ist ein integraler Typ ohne Ober- oder Untergrenze.

  • System.Numerics.Complex ist ein Typ, der komplexe Zahlen darstellt.

  • Eine Reihe von SIMD-fähigen Vektortypen (Single Instruction Multiple Data) im System.Numerics-Namespace.

Integrale Typen

.NET Core unterstützt sowohl vorzeichenbehaftete als auch vorzeichenlose Ganzzahlen mit unterschiedlichen Bereichen von einem Byte bis zu acht Bytes. Alle Ganzzahlen sind Werttypen.

Die folgende Tabelle zeigt die Integraltypen und ihre Größe.

Art Signiert / nicht signiert Größe (Bytes) Mindestwert Höchster Wert
Byte Ohne Vorzeichen 1 0 255
Int16 Unterzeichnet 2 -32.768 32.767
Int32 Unterzeichnet 4 -2.147.483.648 2,147,483,647
Int64 Unterzeichnet 8 -9.223.372.036.854.775.808 9,223,372,036,854,775,807
SByte Unterzeichnet 1 -128 127
UInt16 Ohne Vorzeichen 2 0 65.535
UInt32 Ohne Vorzeichen 4 0 4,294,967,295
UInt64 Ohne Vorzeichen 8 0 18.446.744.073.709.551.615

Jeder Integraltyp unterstützt einen Standardsatz von Operatoren für Arithmetik, Vergleich, Gleichheit, explizite Konvertierung und implizite Konvertierung.

Sie können auch mit den einzelnen Bits in einem ganzzahligen Wert arbeiten, indem Sie die System.BitConverter-Klasse verwenden.

Gleitkommatypen

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

Art Größe (Bytes) Mindestwert Höchster Wert
Doppelt 8 −1.79769313486232e308 1.79769313486232e308
Single 4 −3.402823e38 3.402823e38
Dezimal 16 −79,228,162,514,264,337,593,5 43,950,335 79,228,162,514,264,337,593,543,9 50,335
  • Jeder Gleitkommatyp unterstützt einen Standardsatz von Operatoren für Arithmetik, Vergleich, Gleichheit, explizite Konvertierung und implizite Konvertierung.

  • Sie können auch mit den einzelnen Bits in Doppel- und Einzelwerten arbeiten, indem Sie die BitConverter-Klasse verwenden.

  • Die Dezimalstruktur verfügt über eigene Methoden, Decimal.GetBits und Decimal.Decimal (Int32 ()), um mit den einzelnen Bits eines Dezimalwerts zu arbeiten, sowie über eigene Methoden zum Ausführen einiger zusätzlicher mathematischer Operationen.

BigInteger

  • System.Numerics.BigInteger ist ein unveränderlicher Typ, der eine beliebig große Ganzzahl darstellt, deren Wert theoretisch keine oberen oder unteren Grenzen hat.

  • Die Methoden des BigInteger-Typs sind eng parallel zu denen der anderen Integraltypen.

Komplex

  • Der System.Numerics.Complex-Typ repräsentiert eine komplexe Zahl, dh eine Zahl mit einem reellen Zahlenteil und einem imaginären Zahlenteil

  • Es unterstützt einen Standardsatz von Operatoren für Arithmetik, Vergleich, Gleichheit, explizite Konvertierung und implizite Konvertierung sowie mathematische, algebraische und trigonometrische Methoden.

SIMD

  • Der Numerics-Namespace enthält eine Reihe von SIMD-fähigen Vektortypen für .NET Core.

  • Mit SIMD können einige Vorgänge auf Hardwareebene parallelisiert werden, was zu enormen Leistungsverbesserungen bei mathematischen, wissenschaftlichen und grafischen Apps führt, die Berechnungen über Vektoren durchführen.

  • Die SIMD-fähigen Vektortypen in .NET Core umfassen Folgendes:

    • System.Numerics.Vector2-, System.Numerics.Vector3- und System.Numerics.Vector4-Typen, bei denen es sich um 2-, 3- und 4-dimensionale Vektoren vom Typ Single handelt.

    • Die Vektor <T> -Struktur, mit der Sie einen Vektor eines beliebigen primitiven numerischen Typs erstellen können. Die primitiven numerischen Typen enthalten alle numerischen Typen im System-Namespace mit Ausnahme von Decimal.

    • Zwei Matrixtypen, System.Numerics.Matrix3 × 2, die eine 3 × 2-Matrix darstellen; und System.Numerics.Matrix4 × 4, die eine 4 × 4-Matrix darstellt.

    • Der Typ System.Numerics.Plane, der eine dreidimensionale Ebene darstellt, und der Typ System.Numerics.Quaternion, der einen Vektor darstellt, der zum Codieren dreidimensionaler physikalischer Rotationen verwendet wird.