浮动类型的对象可以安全地转换为更精确的浮点类型,也就是说,转换不会导致基数丢失。 例如,从 float 到 double 或从 double 到 long double 的转换是安全的,并且值保持不变。
如果浮点类型的对象位于低精度类型可表示的范围中,则还可转换为该类型。(有关浮点类型的范围,请参阅浮点限制。)如果原始值不能精确地表示,则可将其转换为下一更高或更低的可表示值。 如果此类值不存在,则结果是不确定的。 请看下面的示例:
cout << (float)1E300 << endl;
类型 float 可表示的最大值为 3.402823466E38 - 比 1E300 小很多。 因此,该数字将转换为无穷大,结果为 1.#INF。