假设我有一些价值:
double x;
Run Code Online (Sandbox Code Playgroud)
我想将它限制在某个范围内[a, b],使得结果值在该范围内:
double confine(double x, double a, double b)
{
if (x < a) return a;
else if (x > b) return b;
return x;
}
Run Code Online (Sandbox Code Playgroud)
是否有单个 boost或STL功能可以为我做这个?
是的,Boost算法有clamp:
double clamped = clamp(x, a, b);
Run Code Online (Sandbox Code Playgroud)
它只需要operator<或自定义比较器,并保证只调用一次或两次.文档指出,使用double和其他浮点类型,NaN可能会导致意外的结果.
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |