Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge aus, um die neuesten Funktionen, Sicherheitsupdates und technischen Support zu nutzen.
Die numerischen Gleitkommatypen stellen reelle Zahlen dar. Alle numerischen Gleitkommatypen sind Werttypen. Sie sind auch einfache Typen und können mit Literalen initialisiert werden. Alle numerischen Gleitkommatypen unterstützen arithmetic-, comparison- und equality-Operatoren.
C# unterstützt die folgenden vordefinierten Gleitkommatypen:
C#-Typ/Schlüsselwort | Ungefährer Bereich | Präzision | Size | .NET-Typ |
---|---|---|---|---|
float |
±1,5 x 10−45 bis ±3,4 x 1038 | ~6–9 Stellen | 4 Byte | System.Single |
double |
±5.0 × 10−324 bis ±1,7 × 10308 | ~15–17 Stellen | 8 Byte | System.Double |
decimal |
±1.0 × 10-28 to ±7.9228 × 1028 | 28-29 Stellen | 16 Bytes | System.Decimal |
In der vorherigen Tabelle ist jedes C#-Typ-Schlüsselwort aus der spalte ganz links ein Alias für den entsprechenden .NET-Typ. Sie sind austauschbar. Die folgenden Deklarationen deklarieren beispielsweise Variablen desselben Typs:
double a = 12.3;
System.Double b = 12.3;
Der Standardwert jedes Gleitkommatyps ist null, 0
. Die einzelnen Gleitkommatypen verfügen jeweils über die Konstanten MinValue
und MaxValue
, die den minimalen und maximalen Endwert des Typs angeben. Die Typen float
und double
verfügen auch über Konstanten, die nicht numerische Werte und Unendlichkeitswerte darstellen. Der typ double
stellt beispielsweise die folgenden Konstanten bereit: Double.NaN, Double.NegativeInfinityund Double.PositiveInfinity.
Der decimal
Typ ist geeignet, wenn der erforderliche Genauigkeitsgrad durch die Anzahl der Ziffern rechts vom Dezimalkomma bestimmt wird. Solche Zahlen werden häufig in Finanzanwendungen verwendet, für Währungsbeträge (z. B. 1,00 $), Zinssätze (z. B. 2,625%) usw. Auch Zahlen, die auf eine Dezimalstelle genau sind, werden durch den Typ decimal
genauer dargestellt: 0,1 kann beispielsweise genau durch eine Instanz von decimal
dargestellt werden, während es keine Instanz von double
oder float
gibt, die genau 0,1 darstellt. Aufgrund dieses Unterschieds bei numerischen Typen können unerwartete Rundungsfehler bei arithmetischen Berechnungen auftreten, wenn Sie double
oder float
für Dezimaldaten verwenden. Sie können double
anstelle von decimal
verwenden, wenn die Optimierung der Leistung wichtiger als die Genauigkeit ist. Allerdings würde jeder Unterschied in der Leistung bei allen Anwendungen außer den berechnungsintensivsten unbemerkt bleiben. Ein weiterer möglicher Grund, decimal
zu vermeiden, besteht darin, die Speicheranforderungen zu minimieren. Beispielsweise verwendet ML.NETfloat
, da sich die Differenz zwischen 4 Bytes und 16 Bytes bei sehr großen Datensätzen summiert. Weitere Informationen finden Sie unter System.Decimal.
Sie können integrale Typen sowie die Typen float
und double
in einem Ausdruck kombinieren. In diesem Fall werden integrale Typen implizit in einen der Gleitkommatypen konvertiert, und bei Bedarf wird der float
Typ implizit in double
konvertiert. Der Ausdruck wird wie folgt ausgewertet:
double
-Typ im Ausdruck vorhanden ist, wird der Ausdruck in double
oder in relationalen Vergleichen oder Vergleichen auf Gleichheit in bool
ausgewertet.double
-Typ im Ausdruck vorhanden ist, wird der Ausdruck in float
oder in relationalen Vergleichen oder Vergleichen auf Gleichheit in bool
ausgewertet.Sie können auch integrale Typen und den decimal
Typ in einem Ausdruck kombinieren. In diesem Fall werden integrale Typen implizit in den decimal
-Typ konvertiert, und der Ausdruck wird als decimal
oder bool
in relationalen Vergleichen und Gleichheitsvergleichen ausgewertet.
Sie können den decimal
Typ nicht mit den typen float
und double
in einem Ausdruck kombinieren. Wenn Sie in diesem Fall arithmetische, Vergleichs- oder Gleichheitsoperationen ausführen möchten, müssen Sie die Operanden explizit vom oder zum Typ decimal
konvertieren, wie im folgenden Beispiel gezeigt:
double a = 1.0;
decimal b = 2.1m;
Console.WriteLine(a + (double)b);
Console.WriteLine((decimal)a + b);
Zum Formatieren eines Gleitkommawerts können Sie standardmäßige Zahlenformatzeichenfolgen oder benutzerdefinierte Zahlenformatzeichenfolgen verwenden.
Der Typ eines Real-Literals wird wie folgt durch sein Suffix bestimmt:
d
oder D
ist vom Typ double
.f
oder F
ist vom Typ float
.m
oder M
ist vom Typ decimal
.Der folgende Code veranschaulicht ein Beispiel für jede:
double d = 3D;
d = 4d;
d = 3.934_001;
float f = 3_000.5F;
f = 5.4f;
decimal myMoney = 3_000.5m;
myMoney = 400.75M;
Das vorherige Beispiel zeigt auch die Verwendung von _
als Zifferntrennzeichen. Sie können das Zifferntrennzeichen mit allen Arten numerischer Literale verwenden.
Sie können auch die wissenschaftliche Notation verwenden, d. h. einen exponentiellen Teil eines Real-Literals angeben, wie das folgende Beispiel zeigt:
double d = 0.42e2;
Console.WriteLine(d); // output 42
float f = 134.45E-2f;
Console.WriteLine(f); // output: 1.3445
decimal m = 1.5E6m;
Console.WriteLine(m); // output: 1500000
Es gibt nur eine implizite Konvertierung zwischen numerischen Gleitkommatypen: von float
zu double
. Allerdings können Sie einen Gleitkommatyp mit der expliziten Umwandlungin beliebige andere Gleitkommatypen konvertieren. Weitere Informationen finden Sie unter Integrierte numerische Konvertierungen (C#-Referenz) (Integrierte numerische Konvertierungen).
Weitere Informationen finden Sie in den folgenden Abschnitten der C#-Sprachspezifikation:
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrieren