相关疑难解决方法(0)

剪辑数字最有效/优雅的方式?

给定一个实数(n),这个实数可以是(上)的最大值,这个实数可以是(更低)的最小值,我们怎样才能最有效地剪切n,使它保持在低位和高位之间?

当然,使用一堆if语句可以做到这一点,但那很无聊!更紧凑,优雅/有趣的解决方案呢?

我自己的快速尝试(C/C++):

float clip( float n, float lower, float upper )
{
    n = ( n > lower ) * n + !( n > lower ) * lower;
    return ( n < upper ) * n + !( n < upper ) * upper;
}
Run Code Online (Sandbox Code Playgroud)

我确信还有其他更好的方法可以做到这一点,这就是为什么我把它放在那里......!

c++ algorithm math logic

47
推荐指数
7
解决办法
6万
查看次数

标签 统计

algorithm ×1

c++ ×1

logic ×1

math ×1