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