TOC

This article has been localized into German by the community.

Datenarten:

Gleitkomma (float)

Fließkomma oder Gleitkomma-Zahlen sind Zahlen die einen Bruchteil haben (normalerweise durch ein Komma getrennt). Sie fragen sich vielleicht, warum es nicht nur einen einzigen Datentyp für den Umgang mit Zahlen gibt (Brüche oder keine Brüche), aber das ist weil der Computer viel schneller mit ganzen Zahlen umgehen kann als mit Zahlen, die Brüche enthalten. Daher ist es sinnvoll, zwischen ihnen zu unterscheiden - wenn Sie wissen, dass Sie nur mit ganzen Zahlen arbeiten, wählen Sie einen Integer-Datentyp. Andernfalls benutzen Sie einen Gleitkomma Typ wie in diesem Artikel beschrieben.

Die Verwendung eines Gleitkommawerts ist genauso einfach wie die Verwendung einer Ganzzahl, obwohl es noch einige Probleme mit Gleitkommawerten gibt, auf die wir später eingehen werden. Lassen Sie uns zunächst sehen, wie es aussieht, wenn Sie einen der am häufigsten verwendeten Fließkommadatentypen deklarieren: den double.

double number;

Genau wie bei der Ganzzahl können Sie ihr einen Wert zur selben Zeit durchführen wie Sie sie deklarieren:

double number = 42.0;

Das gleiche gilt für die Float- und Dezimaltypen, über die wir sofort diskutieren werden, aber hier ist die Notation etwas anders:

double doubleVal = 42.0;
float floatVal = 42.0f;
decimal decimalVal = 42.0m;

Beachten Sie die "f" und "m" nach den Zahlen - sie teilen dem Compiler mit, dass wir einen Float und einen Dezimalwert zuweisen. Ohne sie wird C# die Zahlen als double interpretieren, das nicht automatisch in ein Float oder eine Dezimalzahl konvertiert werden kann.

Fließkomma, doppelt oder Dezimal?

Der Umgang mit Gleitkommawerten in der Programmierung hat immer eine Menge Fragen und Bedenken verursacht. Zum Beispiel hat C# mindestens drei Datentypen für den Umgang mit nicht-ganzzahligen / nicht-Integer Zahlen:

  • float (ein Alias für System.Single)
  • double (ein Alias für System.Double)
  • decimal (ein Alias für System.Decimal)

Der zugrunde liegende Unterschied ist vielleicht ein bisschen schwierig zu verstehen, es sei denn, Sie haben viel Wissen darüber, wie ein Computer intern arbeitet, also bleiben wir hier bei den praktischen Dingen.

Im Allgemeinen liegt der Unterschied zwischen den Datentypen "float", "double" und "decimal" in der Genauigkeit und damit auch in der Speicherbelegung. Der "float" ist der günstigste - er kann eine Zahl mit bis zu 7 Ziffern darstellen. Das "doble" ist präziser, mit bis zu 16 Ziffern, während der "decimal" mit einem Höchstwert von 29 Ziffern am präzisesten ist.

Sie fragen sich vielleicht, wofür Sie diese Präzision brauchen, aber die Antwort lautet "Mathe-Zeug". Das klassische Beispiel, um den Unterschied zu verstehen, ist, 10 mit 3 zu teilen. Die meisten von uns werden das im Kopf tun und sagen, dass das Ergebnis 3,33 ist, aber viele Leute wissen auch, dass es nicht ganz genau ist. Die wirkliche Antwort ist 3.33, gefolgt von einer Anzahl zusätzlicher 3er - wie viele, wenn diese Berechnung mit C# durchgeführt wird, wird durch den Datentyp bestimmt. Schau dir dieses Beispiel an:

float a = 10f / 3;
Console.WriteLine(a);
double b = 10d / 3;
Console.WriteLine(b);
decimal c = 10m / 3;
Console.WriteLine(c);

Ich mache hier exakt die selbe Berechnung, nur mit unterschiedlichen Datentypen. Das Ergebnis sieht wie folgt aus:

a: 3.333333
b: 3.33333333333333
c: 3.3333333333333333333333333333

Der Unterschied ist ziemlich klar, aber wie viel Präzision brauchen Sie wirklich für die meisten Aufgaben?

Wie man das entscheidet

Zunächst überlegen Sie einmal, wieviele Zahlen Sie speichern müssen. Ein Gleitkomma kann nur 7 Ziffern enthalten. Wenn Sie also eine größere Zahl benötigen, können Sie stattdessen eine Doppelzahl oder eine Dezimalzahl verwenden.

Zweitens werden sowohl der Float als auch der Double Wert als eine Annäherung an den tatsächlichen Wert darstellen - mit anderen Worten, es ist möglicherweise nicht bis zur letzten Ziffer vergleichbar. Das bedeutet auch, dass, wenn Sie mehr und mehr Berechnungen mit diesen Variablen durchführen, diese möglicherweise nicht mehr so genau sind, was im Grunde bedeutet, dass zwei Werte, die als gleich ausgegeben werden sollten, auf einmal nicht gleich sind.

Für Situationen, in denen es auf Präzision ankommt, sollten Sie den decimal -Typ verwenden. Ein gutes Beispiel ist die Darstellung von Finanznummern (Geld) - Sie möchten nicht 10 Beträge in Ihrer Buchhaltung hinzufügen, nur um herauszufinden, dass das Ergebnis nicht Ihren Erwartungen entspricht. Auf der anderen Seite, wenn die Leistung wichtiger ist, sollten Sie einen float (für kleine Zahlen) oder einen double (für größere Zahlen) verwenden. Eine decimal ist dank ihrer extra Präzision viel langsamer als ein Float - einige Tests zeigen, dass sie bis zu 20 mal langsamer ist!

Zusammenfassung

Wenn Sie mit Gleitkommawerten arbeiten, sollten Sie den Datentyp float oder double verwenden, wenn die Genauigkeit weniger wichtig ist als die Leistung. Wenn Sie jedoch ein Höchstmaß an Präzision wünschen und bereit sind, ein niedrigeres Leistungsniveau zu akzeptieren, sollten Sie mit dem Dezimaldatentyp "decimal" arbeiten - insbesondere wenn es sich um Finanznummern handelt

Wenn Sie mehr über die grundlegenden Unterschiede zwischen diesen Datentypen erfahren möchten, sollten Sie sich diesen sehr detaillierten Artikel auf einer viel detaillierteren Ebene ansehen: Was jeder Informatiker über Gleitkommaarithmetik wissen sollte


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!