Konwersje zmiennoprzecinkowe
Obiekt typu zmiennoprzecinkowego można bezpiecznie przekonwertować na bardziej dokładny typ zmiennoprzecinkowy — to znaczy, konwersja nie powoduje utraty znaczenia.Na przykład konwersje z float do double lub z double do long double są bezpieczne, a wartość pozostaje niezmieniona.
Obiekt typu zmiennoprzecinkowego również można konwertować do typu mniej dokładnego, jeśli znajdzie się w zasięgu wartości reprezentowanych przez ten typ. (Zobacz Limity zmiennoprzecinkowe dla zakresów zmiennoprzecinkowych typów.) Jeśli oryginalna wartość nie może być przedstawiona precyzyjnie, to można przekonwertować do następnej wyższej lub mniejszej reprezentacji wartości.Jeśli nie ma takiej wartości, wynik jest niezdefiniowany.Rozważmy następujący przykład:
cout << (float)1E300 << endl;
Maksymalna wartość reprezentowana przez typ float jest 3.402823466E38 — znacznie mniejsza wartość niż 1E300.W związku z tym, liczba jest konwertowana do nieskończoności, a wynik jest 1. #INF.