При действительном (n) максимальном значении это реальное может быть (верхнее), а минимальное значение этого реального может быть (ниже), как мы можем наиболее эффективно обрезать n, чтобы он оставался между нижним и верхним?
Конечно, использование кучки if-операторов может сделать это, но это скучно! Как насчет более компактных и элегантных/интересных решений?
Моя собственная быстрая попытка (C/С++):
float clip( float n, float lower, float upper )
{
n = ( n > lower ) * n + !( n > lower ) * lower;
return ( n < upper ) * n + !( n < upper ) * upper;
}
Я уверен, что есть другие, более эффективные способы сделать это, поэтому я помещаю это там..!