【发布时间】:2019-09-12 14:43:47
【问题描述】:
亲爱的花友们,
是否有某种保证将浮点类型强制转换为“更宽”的类型,总是产生与执行相应的 static_cast 相同的结果?
这里是一个例子:
float f = <any float>;
double a = f;
double b = static_cast<double>(f);
// does this always hold?
EXPECT_TRUE(a==b);
感谢您提供的信息。
【问题讨论】:
-
这显然不适用于 NaN。因为 NaN 被定义为不等于任何包括它们自己。但这并不是您真正要问的问题,所以只需添加评论即可。
-
我很好奇是什么让你认为它可能会有所不同?
-
gcc 将创建相同的汇编指令:godbolt.org/z/i7K_vw
-
请注意,如果根据 IEEE 754 表示,
double可以保存float的任何值。因此不会损失精度(无舍入等)。 -
@user1810087 什么都没有?真的吗?
标签: c++