在C++中,将浮点值转换为双精度并返回浮点值会得到相同的值吗

Does converting a float to a double and back to float give the same value in C++

本文关键字:返回 C++ 转换 双精度      更新时间:2023-10-16

在以下代码中假设

float f1 = ...;
double d1 = static_cast<double>(f1);
float f2 = static_cast<float>(d1);
ASSERT( f1 == f2 );

变量CCD_ 1被初始化为不是NaN的东西。那么,C++标准是否保证断言成立?

以下是一些线索,但不是答案:

4.6 float类型的prvalue可以转换为double类型的prvalue。该值保持不变。这种转换称为浮点提升。…

4.8浮点类型的prvalue可以转换为另一个浮点类型的pr value如果源值可以精确地表示为目标类型,则转换的结果就是代表。如果源值位于两个相邻的目标值之间,则转换的结果是实现定义的对这些值中任一值的选择。