aneira mais eficiente / elegante de recortar um númer
Dado um real (n), um valor máximo que esse real pode ser (superior) e um valor mínimo que esse real pode ser (inferior), como podemos capturar n com mais eficiência, de modo que permaneça entre inferior e superior?
Claro, usar várias instruções if pode fazer isso, mas isso é chato! Que tal soluções mais compactas e elegantes / divertidas?
Minha própria tentativa rápida (C / C ++):
float clip( float n, float lower, float upper )
{
n = ( n > lower ) * n + !( n > lower ) * lower;
return ( n < upper ) * n + !( n < upper ) * upper;
}
Tenho certeza de que existem outras maneiras melhores de fazer isso, é por isso que estou colocando isso lá fora ..!