Konvertierungen von Gleitkommatypen
Ein Objekt vom Gleitkommatyp kann gefahrlos in einen genaueren Gleitkommatyp konvertiert werden, d. h. die Konvertierung verursacht keinen Signifikanzverlust. Beispielsweise sind Konvertierungen von float in double oder von double in long double unproblematisch, und der Wert bleibt unverändert.
Ein Objekt vom Gleitkommatyp kann auch in einen weniger genauer Typ konvertiert werden, wenn es in einem Bereich ist, der von diesem Typ darstellbar ist. (Weitere Informationen über die Bereiche von Gleitkommatypen erhalten Sie in den Grenzwerten für Gleitkommakonstanten.) Wenn der ursprüngliche Wert nicht exakt darstellbar ist, kann er in den nächsten höheren oder niedrigeren darstellbaren Wert konvertiert werden. Wenn kein solcher Wert vorhanden ist, ist das Ergebnis nicht definiert. Betrachten Sie das folgende Beispiel:
cout << (float)1E300 << endl;
Der maximale, im float-Typ darstellbare Wert ist 3.402823466E38 – eine Zahl wesentlich kleiner als 1E300. Daher wird die Zahl in unendlich konvertiert, und das Ergebnis ist 1.#INF.