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