将浮点转换为无符号整数c++

convert floats into unsigned ints c++

本文关键字:无符号整数 c++ 转换      更新时间:2023-10-16

如何将浮点数字转换或缩放为无符号整数。

我有一个浮点向量,它的最小值和最大值是已知的,比如说-10到+10,我想把它们转换成从0到int_max的无符号整数。

只需计算浮点值在浮点区间的确切位置(作为0-1值;您也可以将其视为百分比)。然后相应地缩放最大整数值。代码中:

const float minFloat = -10.f;
const float maxFloat = 10.f;
const unsigned int maxInt = std::numeric_limits<int>::max(); // Is that what you wanted?
unsigned int convert(float val)
{
  val = (val - minFloat) / (maxFloat - minFloat);
  return static_cast<unsigned int>(std::round(val * maxInt));
}