假设我有一些值(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/

10-11 22:50
查看更多