Самый эффективный / элегантный способ обрезать номер?
Учитывая действительное (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;
}
Я уверен, что есть и другие, лучшие способы сделать это, поэтому я выкладываю это там!