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