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