转换为 double 和 float 是否保留无穷大和 NaN?

Does casting to or from a double and a float preserve infinity and NaN?

将 double infinity 转换为 float 时,反之亦然,它仍然是 infinity 吗?和NaN一样吗?

any float 转换为 double 可以保证保留值。如果原始值可表示为浮点数,则保证将双精度数转换为浮点数以保留值。

如果您的系统符合 IEEE-754,则 float 可以表示无穷大和 NaN。否则,您可以使用 <numeric_limits> 来检查是否是这种情况。 double NaN 的有效负载不一定由 float NaN 表示。