Numerische Ausdrücke in .NET FrameworkNumerics in the .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.The .NET Framework supports the standard numeric integral and floating-point primitives, as well as BigInteger, an integral type with no theoretical upper or lower bound, Complex, a type that represents complex numbers, and a set of SIMD-enabled vector types in the System.Numerics namespace.

Darüber hinaus wurde „System.Numerics.Vectors“, die Bibliothek SIMD-fähiger Vektortypen, als NuGet-Paket veröffentlicht.In addition, System.Numerics.Vectors, the SIMD-enabled library of vectory types, was released as a NuGet package.

Ganzzahlige TypenIntegral types

Das .NET Framework unterstützt Ganzzahlen mit und ohne Vorzeichen mit Längen von einem bis zu acht Byte.The .NET Framework supports both signed and unsigned integers ranging from one byte to eight bytes in length. 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.The following table lists the integral types and their size, indicates whether they are signed or unsigned, and documents their range. Alle Ganzzahlen sind Werttypen.All integers are value types.

TypType Mit/ohne VorzeichenSigned/Unsigned Größe (Byte)Size (bytes) MinimalwertMinimum value MaximalwertMaximum Value
System.Byte Ohne VorzeichenUnsigned 11 00 255255
System.Int16 SigniertSigned 22 -32,768-32,768 32,76732,767
System.Int32 SigniertSigned 44 -2,147,483,648-2,147,483,648 2,147,483,6472,147,483,647
System.Int64 SigniertSigned 88 -9,223,372,036,854,775,808-9,223,372,036,854,775,808 9,223,372,036,854,775,8079,223,372,036,854,775,807
System.SByte SigniertSigned 11 -128-128 127127
System.UInt16 Ohne VorzeichenUnsigned 22 00 65,53565,535
System.UInt32 Ohne VorzeichenUnsigned 44 00 4,294,967,2954,294,967,295
System.UInt64 Ohne VorzeichenUnsigned 88 00 18,446,744,073,709,551,61518,446,744,073,709,551,615

Jeder ganzzahlige Typ unterstützt einen Standardsatz an Operatoren (arithmetisch, Vergleich, Gleichheit, explizite Konvertierung und implizite Konvertierung).Each integral type supports a standard set of arithmetic, comparison, equality, explicit conversion, and implicit conversion operators. 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.Each integer also includes methods to perform equality comparisons and relative comparisons, to convert the string representation of a number to that integer, and to convert an integer to its string representation. 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.Some additional mathematical operations beyond those handled by the standard operators, such as rounding and identifying the smaller or larger value of two integers, are available from the Math class. Sie können auch mit den einzelnen Bit in einem ganzzahligen Wert arbeiten, indem Sie die BitConverter-Klasse verwenden.You can also work with the individual bits in an integer value by using the BitConverter class.

Beachten Sie das ganzzahlige Typen ohne Vorzeichen nicht CLS-kompatibel sind.Note that the unsigned integral types are not CLS-compliant. Weitere Informationen finden Sie unter Sprachenunabhängigkeit und sprachunabhängige Komponenten.For more information, see Language Independence and Language-Independent Components.

GleitkommatypenFloating-point types

Das .NET Framework enthält drei primitive Gleitkommatypen, die in der folgenden Tabelle aufgeführt sind.The .NET Framework includes three primitive floating point types, which are listed in the following table.

TypType Größe (in Bytes)Size (in bytes) MinimumMinimum MaximumMaximum
System.Double 88 -1.79769313486232e308-1.79769313486232e308 1.79769313486232e3081.79769313486232e308
System.Single 44 -3.402823e38-3.402823e38 3.402823e383.402823e38
System.Decimal 1616 -79,228,162,514,264,337,593,543,950,335-79,228,162,514,264,337,593,543,950,335 79,228,162,514,264,337,593,543,950,33579,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).Each floating-point type supports a standard set of arithmetic, comparison, equality, explicit conversion, and implicit conversion operators. 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.Each also includes methods to perform equality comparisons and relative comparisons, to convert the string representation of a floating-point number, and to convert a floating-point number to its string representation. Einige weitere mathematische, algebraische und trigonometrische Operationen werden von der Math-Klasse bereitgestellt.Some additional mathematical, algebraic, and trigonometric operations are available from the Math class. Sie können auch mit den einzelnen Bit in Double- und Single-Werten arbeiten, indem Sie die BitConverter-Klasse verwenden.You can also work with the individual bits in Double and Single values by using the BitConverter class. 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.The System.Decimal structure has its own methods, Decimal.GetBits and Decimal.Decimal(Int32[]), for working with a decimal value's individual bits, as well as its own set of methods for performing some additional mathematical operations.

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.The Double and Single types are intended to be used for values that by their nature are imprecise (such as the distance between two stars in the solar system) and for applications in which a high degree of precision and small rounding error is not required. Sie sollten den System.Decimal-Typ in Fällen verwenden, in denen eine höhere Genauigkeit erforderlich ist und Rundungsfehler unerwünscht sind.You should use the System.Decimal type for cases in which greater precision is required and rounding error is undesirable,

BigIntegerBigInteger

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.System.Numerics.BigInteger is an immutable type that represents an arbitrarily large integer whose value in theory has no upper or lower bounds. Die Methoden des BigInteger-Typs ähneln im Wesentlichen denen der anderen ganzzahligen Typen.The methods of the BigInteger type closely parallel those of the other integral types.

KomplexComplex

Der Typ Complex steht für eine komplexe Zahl, d. h., für eine Zahl mit einem reellen und einem imaginären Teil.The Complex type represents a complex number, that is, a number with a real number part and an imaginary number part. Er unterstützt einen Standardsatz an Operatoren (arithmetisch, Vergleich, Gleichheit, explizite Konvertierung und implizite Konvertierung) sowie mathematische, algebraische und trigonometrische Methoden.It supports a standard set of arithmetic, comparison, equality, explicit conversion, and implicit conversion operators, as well as mathematical, algebraic, and trigonometric methods.

SIMD-fähige VektortypenSIMD-enabled vector types

Der System.Numerics-Namespace umfasst einen Satz an SIMD-fähigen Vektortypen für .NET Framework.The System.Numerics namespace includes a set of SIMD-enabled vector types for the .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.SIMD (Single Instruction Multiple Data operations) allows some operations to be parallelized at the hardware level, which results in huge performance improvements in mathematical, scientific, and graphics apps that perform computations over vectors.

Die SIMD-fähigen Vektortypen in .NET Framework umfassen Folgendes:.The SIMD-enabled vector types in the .NET Framework include the following: . Darüber hinaus enthält „System.Numerics.Vectors“ einen Plane- und einen Quaternion-Typ.In addition, System.Numerics.Vectors includes a Plane type and a Quaternion type.

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.The SimD-enabled vector types are implemented in IL, which allows them to be used on non-SimD-enabled hardware and JIT compilers. 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.To take advantage of SIMD instructions, your 64-bit apps must be compiled by the new 64-bit JIT Compiler for managed code, which is included with the .NET Framework 4.6; it adds SIMD support when targeting x64 processors.

SIMD kann auch als NuGet-Paket heruntergeladen werden.SIMD can also be downloaded as a NuGet package. Das NuGET-Paket umfasst auch eine generische Vector<T>-Struktur, mit der Sie einen Vektor eines beliebigen primitiven numerischen Typs erstellen können.The NuGET package also includes a generic Vector<T> structure that allows you to create a vector of any primitive numeric type. (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.(The primitive numeric types include all numeric types in the System namespace except for Decimal.) In addition, the Vector<T> structure provides a library of convenience methods that you can call when working with vectors.

Siehe auchSee Also

Grundlagen der AnwendungApplication Essentials