我有一个固定在 0.0f 和 1.0f 之间的 float z_f
,我想将其转换为保持排序顺序的无符号整数。
一个简单的方法可能是:
float z_f = 0.5;
unsigned int z_ui = (unsigned int) z_f*(MAX_UINT32);//Scale to full range of uint32
这行得通吗?
这会导致精度损失吗?
有没有更好的方法来达到同样的效果?
最佳答案
类型转换 (unsigned int) z_f
比二进制 *
具有更高的优先级,因此您有效地将 MAX_UINT32
与 0 或 1 相乘.
关于c++ - 将范围有限的 float 转换为保持排序顺序和精度的无符号整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19710828/