c++ - 如何确保数字在范围内?

标签 c++ boost stl

假设我有一些值(value):

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 函数可以为我做这件事?

最佳答案

是的,Boost 算法有 clamp :

double clamped = clamp(x, a, b);

只需要operator<或自定义比较器,并保证它只被调用一次或两次。文档指出 double和其他浮点类型,NaN 可能会导致意外结果。

关于c++ - 如何确保数字在范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573798/

相关文章:

c++ - 对于 C++ 中的每个无法更新 vector

c++ - 5 法则(对于构造函数和析构函数)是否过时了?

c++ - 将文件读入 vector ,我的输入函数有什么问题?

c++ - 使用 boost::thread 时出现 Visual Studio 2010 链接器错误

c++ - ptr_vector 迭代器不需要增量吗?

c++ - matrix.size() 和 matrix[0].size() 有什么区别?

c++ - 用C++代码返回对象是什么意思?

c++ - Boost.asio 和异步链,unique_ptr?

c++ - 查找值属于哪个 bin

c++ - reinterpret_cast<unsigned long> 无效转换