gpt4 book ai didi

c++ - 如何将 32 位整数转换为 32 位 float 以便保留顺序?

转载 作者:行者123 更新时间:2023-11-30 00:39:35 26 4
gpt4 key购买 nike

我有两个 32 位整数 i1、i2,我需要将它们转换为 float f1、f2,以便保留它们的相对顺序(即 i1 < i2 => f1 < f2)

reinterpret_cast 会成功吗?有没有更好的方法?

最佳答案

如果整数值小于 224,只需转换值:

float f1 = i1, f2 = i2;

对于较大的值,您将失去精度,并且两个不同的整数可能会转换为相同的浮点值。

另一方面,您可以复制位模式。如果您的 float 是 IEEE754,则这需要符号位一致并且两个整数都不能代表某种形式的 NaN。 (如果符号位不一致,您必须注意 -0.f == +0.f:。)要复制二进制表示:

float f1;
std::copy(reinterpret_cast<const char*>(&i1),
reinterpret_cast<const char*>(&i1) + 4,
reinterpret_cast<char*>(&f1));

关于c++ - 如何将 32 位整数转换为 32 位 float 以便保留顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8521382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com