将float转换为int,当超出int范围时,将其设置为max int或min int
Convert float to int, when overflow range of int, make it max int or min int
我想找到一种方法,将float
转换为int
,当int
溢出范围时,使其最大int
或最小int
。
现在我有了这样一个方法
float x, mul = 1e5;
int y;
if (x * mul > (float)max_int_value)
y = max_int_value;
else if (x * mul < (float)min_int_value)
y = min_int_value;
else
y = (int)x * mul;
但是我认为这是非常慢的(需要两次比较),我想使用SSE来加速转换多个值。
我想要一个更快速的方法,非常感谢。
您可以使用此代码计算具有4个浮点数的向量。
开头必须包含" emmintrinin .h"float x[4]; // input vector
float y[4]; // result vector
__m128 mMaxInt = _mm_set1_ps((float)max_int_value);
__m128 mMinInt = _mm_set1_ps((float)min_int_value);
__m128 mMul = _mm_set1_ps(1e5);
__m128 mX = _mm_loadu_ps(x);
__m128 mY;
mY = _mm_mul_ps(mX, mMul);
mY = _mm_max_ps(mMinInt, mY);
mY = _mm_min_ps(mMaxInt, mY);
_mm_store_ps(y, mY);
相关文章:
- 在类 (C++) 之外设置 const int 成员变量
- 类中的 C++ int 被设置为值,似乎不知从何而来
- 查找不在标准中的第一个值::设置<int>最小-最大值
- Qt 原子 int 获取并立即设置
- 如何检查 int 中是否恰好设置了一位?
- 无法从JNI设置Java Int数组字段
- 将标准:设置为<int> jintArray
- C++:无法在按位函数后将 int 类型设置为非标量
- 在循环中设置指向 int 值的指针
- 错误C4430:丢失类型指定词 - 假设INT.注意:C 不支持对我的构造函数的默认设置
- C++:Unordered_map.template(char,int)未设置所需的值
- 无法使用 pair<int、int> 作为 STL 中设置C++键
- 使用强制转换和设置填充将 int 值更改为时间
- 如何将数组的一部分从 int 转换为浮点数并将值设置为另外两个数组
- 在字符串中设置一个等于 int + "," 的某个字母
- 如何在C 中的结构内设置一个int数组
- 将 std::vector<int> 设置为一个范围
- 如果我将 int 设置为等于 2 个最大整数的总和会发生什么
- 如何在C++中将 const int 设置为最大值
- 转换 map<int C++,请将<int>>设置为 map<int, 矢量<int>>