如何确保数字在一定范围内
How do I ensure a number is within a range?
>假设我有一些值:
double x;
我想将其限制在某个范围内,以便结果值在该范围内[a, b]
:
double confine(double x, double a, double b)
{
if (x < a) return a;
else if (x > b) return b;
return x;
}
是否有单个boost
或 STL 函数可以为我执行此操作?
是的,提升算法有clamp
:
double clamped = clamp(x, a, b);
它只需要operator<
或自定义比较器,并保证只调用一次或两次。文档指出,对于double
和其他浮点类型,NaN 可能会导致意外结果。
除了clamp()
,你也可以在std::max()
和std::min()
中使用一个衬里来做到这一点。
double confine(double x, double a, double b) {
return std::max(a, std::min(x, b));
}
相关文章:
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 如何找到给定范围内除以给定数字时具有一定余数的值的数量?
- 我应该如何使用remove_if删除两个数字范围内的元素
- C++ 如何在给定范围内将数组中的数字相加?
- 计算数字范围内特定数字的出现次数
- 在给定范围内数字的最大值
- 如何在数组中的范围内添加所有数字?然后找到该范围的平均值
- 从TextFile中读取数字,并检查它们是否在范围内
- 如何在BST中从最高到最低打印特定范围内的数字,访问的节点最少
- 如何在包含不同数字的范围内找到整数
- 循环直到整数输入在所需范围内无法处理非数字字符输入
- 检查拼写数字是否在C++范围内
- 如何确保数字在一定范围内
- 正在检查排序列表中是否有一个范围内的数字
- 使用cctype库搜索函数,以查找某个范围内的数字字符数
- 使用数学获取范围内的数字
- C++操作 ASCII 中的数字以仅保留在字母范围内
- RSA程序只对特定范围内的数字进行加密和解密
- 在检查数字是否在范围内时,无符号int的滚动问题
- 如何检查两个数字是否在浮点类型的精度限制的有效数字"x"范围内?