如何将浮点数转换或缩放为无符号整数。
我有一个浮点向量,其min和max是已知的,让我们说-10到+10,我希望将它们转换为从0到int_max的无符号整数。
答案 0 :(得分:4)
只需计算浮点值中浮点值的确切位置(作为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));
}