Оператор по модулю и границы - PullRequest
0 голосов
/ 13 марта 2019

У меня есть функция, которая принимает 3 параметра (upperBound, lowerBound, value), если значение не находится между upperBound и lowerBound, оно должно быть переназначено между ними. Я могу сделать это для положительных чисел, но я не знаю, как это будет работать для смешанных негативов и позитивов, т.е. если

У меня есть f (60, 0, -5). Я хочу, чтобы функция отображала 55. Я знаю, что мы должны использовать оператор по модулю, и я могу использовать комбинации разных случаев, но я хотел бы добиться следующего, просто 2 случая:

если значение

иначе, если значение> upperBound, то один общий оператор для положительных и отрицательных целых чисел, который дает значение между границами

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

не забудьте сделать смещение для минимального значения.
при условии, что у нас есть следующее

int min = 15;
int max = 60;
int testValue = -5;

сделать следующее

int result = (testValue % (max-min)) + min;

это должно работать так же, даже если min, max или testValue отрицательны.

0 голосов
/ 13 марта 2019

В Python -5 % 60 = 55

Оператор% (по модулю) возвращает остаток от деления первого аргумента на второй.Числовые аргументы сначала преобразуются в общий тип.Аргумент «ноль вправо» вызывает исключение ZeroDivisionError.Аргументами могут быть числа с плавающей запятой, например, 3,14% 0,7 равно 0,34 (поскольку 3,14 равно 4 * 0,7 + 0,34.) Оператор по модулю всегда выдает результат с тем же знаком, что и его второй операнд (или ноль).);абсолютное значение результата строго меньше, чем абсолютное значение второго операнда [1].

См. Документация Python

...