Frage

Soweit ich Gleitkommazahlen sind von der Form n * 2 ^ e, mit

kennen
  • Schwimmerbereich liegt n = - (2 ^ 23-1) - (2 ^ 23-1) und e = -126 - 127
  • Doppel Bereich ist n = - (2 ^ 52-1) - (2 ^ 52-1) und e = -1.022-1023

Ich war auf der Suche durch die C ++ Standard, aber nicht den Ort zu finden, wo der Standard dies angibt, oder beauftragt die Assoziation des float, double und long double-Typen mit definierten Bereichen in anderen (IEEE) Standards. Das einzige relevante, was ich in 3.9.1.8 gefunden ist:

  

Es gibt drei Gleitkomma-Typen: float, double und long double. Die Art Doppel bietet mindestens so viel Präzision wie Schwimmer und dem Typ long double liefert mindestens so viel Präzision wie double. Der Satz von Werten vom Typ float ist eine Teilmenge der Menge von Werten vom Typ double; der Satz von Werten des Typs Doppel ist eine Teilmenge der Menge von Werten vom Typ long double. Der Wert Darstellung Gleitkommatypen ist implementierungsdefiniert ist.

Und keine Erwähnung des Mindestreichweite von der Art zur Verfügung gestellt.

Wo / wie spezifiziert der Standard die (mindestens?) Wertebereich der Floating-Point-Typen? Oder kann ein Compiler frei beliebigen Wertebereich wählen und nach wie vor Standard kompatibel sein?

War es hilfreich?

Lösung

Wie integer Numberic Grenzen, die Grenzen für float, double und long double werden aus dem C-Standard eingeführt. Der Mindestwert für Konstanten FLT_MAX, DBL_MAX und LDBL_MAX ist 1E+37. Für ihre *_MIN Varianten der Maximalwert ist 1E-37.

Andere Tipps

Was Sie zitiert haben, ist alles, was über die Gleitkomma-Typen in C ++ garantiert wird. Wie es heißt, ihre Darstellung ist die Implementierung definiert.

Sie können jedoch Abfrage für Informationen über die Grenzen und ob die Typen sind IEC 559 (IEEE 754) angegebenen Typen die std::numeric_limits Vorlagen in <limits> verwendet wird.

Die Norm legt keine solche Dinge, weil sie oft hardwareabhängig und ändern im Laufe der Zeit sind. Während 32 heute Bits einen Standard betrachtet, in 10 Jahren möglicherweise Dinge in weniger als 64 Bit zu tun geschmacklos erscheinen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top