Conversioni in tipi a virgola mobile
Un oggetto di un tipo a virgola mobile può essere convertito in modo sicuro in un tipo a virgola mobile più preciso, senza che la conversione causi una perdita di significato. Ad esempio, le conversioni dal tipo float nel tipo double o dal tipo double nel tipo long double sono sicure e il valore rimane invariato.
Un oggetto di un tipo a virgola mobile può essere inoltre convertito in un tipo meno preciso, se è compreso in un intervallo rappresentabile mediante tale tipo (per gli intervalli dei tipi a virgola mobile, vedere Limiti dei tipi a virgola mobile). Se il valore originale non può essere rappresentato in modo preciso, può essere convertito nel successivo valore più alto o più basso rappresentabile. Se tale valore non esiste, il risultato non è definito. Si consideri l'esempio seguente:
cout << (float)1E300 << endl;
Il valore massimo rappresentabile dal tipo float è 3.402823466E38, un numero molto più piccolo rispetto a 1E300. Di conseguenza, il numero viene convertito a infinito e il risultato è 1.#INF.