Was ist der Unterschied zwischen float und double?

Ich habe über den Unterschied zwischen doppelter Genauigkeit und einfacher Genauigkeit gelesen. In den meisten Fällen scheinen jedoch "Float" und "Double" austauschbar zu sein, d. h. die Verwendung des einen oder des anderen scheint die Ergebnisse nicht zu beeinflussen. Ist dies wirklich der Fall? Wann sind Floats und Doubles austauschbar? Was sind die Unterschiede zwischen ihnen?

Hier ist, was der Standard C99 (ISO-IEC 9899 6.2.5 §10) oder C++2003 (ISO-IEC 14882-2003 3.1.9 §8) Standards sagen:

Es gibt drei Gleitkommatypen: Float", "Double" und "Long Double". Der Typ double bietet mindestens die gleiche Genauigkeit wie float, und der Typ long double bietet mindestens die gleiche Genauigkeit wie double. Die Menge der Werte vom Typ float ist eine Teilmenge der Menge der Werte vom Typ double; die Menge der Werte vom Typ double ist eine Teilmenge der Menge der Werte vom Typ long double.

Der C++ Standard fügt hinzu:

Die Wertedarstellung von Fließkommatypen ist implementierungsabhängig.

Ich würde empfehlen, einen Blick auf das ausgezeichnete What Every Computer Scientist Should Know About Floating-Point Arithmetic zu werfen, das den IEEE-Gleitkommastandard eingehend behandelt. Sie lernen die Details der Darstellung kennen und werden feststellen, dass es einen Kompromiss zwischen Größe und Genauigkeit gibt. Die Genauigkeit der Fließkommadarstellung nimmt mit abnehmendem Betrag zu, so dass Fließkommazahlen zwischen -1 und 1 die höchste Genauigkeit aufweisen.

Kommentare (0)
  • Ein Double ist 64 und ein Single Precision (Fließkommazahl) hat 32 Bits.
  • Das Double hat eine größere Mantisse (die ganzzahligen Bits der reellen Zahl).
  • Etwaige Ungenauigkeiten sind beim Double geringer.
Kommentare (0)

Fließkommazahlen haben eine geringere Genauigkeit als Doppelzahlen. Auch wenn Sie es bereits wissen, lesen Sie zum besseren Verständnis Was wir über Fließkommaarithmetik wissen sollten.

Kommentare (2)