Самый эффективный / элегантный способ обрезать номер?

Учитывая действительное (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;
}

Я уверен, что есть и другие, лучшие способы сделать это, поэтому я выкладываю это там!

Ответы на вопрос(13)

Ваш ответ на вопрос