Conversões flutuantes
Um objeto de um tipo flutuante pode ser convertido com segurança em um tipo flutuante mais preciso; ou seja, a conversão não resulta em nenhuma perda de significação. Por exemplo, as conversões de float em double ou de double em long double são seguras, e o valor permanece inalterado.
Um objeto de um tipo flutuante também poderá ser convertido em um tipo menos preciso, se estiver em um intervalo que possa ser representado por esse tipo. (Consulte Limites de flutuação para conhecer os intervalos dos tipos flutuantes.) Se o valor original não puder ser representado com precisão, poderá ser convertido no próximo valor representável superior ou inferior. Se tal valor não existir, o resultado será indefinido. Considere o exemplo a seguir:
cout << (float)1E300 << endl;
O valor máximo representável pelo tipo float é 3,402823466E38 — um número muito menor do que 1E300. Portanto, o número é convertido em infinito, e o resultado é 1.#INF.