Math.clamp()
Ограничивает число диапазоном: меньше min — вернёт min, больше max — вернёт max.
Доступно с: Java 21
Синтаксис
public static int clamp(long value, int min, int max)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| value | long, double, float | Исходное число. |
| min | int, long, double, float | Нижняя граница. |
| max | same type as min | Верхняя граница, не меньше min. |
Возвращаемое значение
same type as minЧисло в пределах от min до max.
Примеры
Процент, который не выходит за 0–100:
void main() {
IO.println(Math.clamp(150, 0, 100));
IO.println(Math.clamp(-5, 0, 100));
IO.println(Math.clamp(42, 0, 100));
}Результат:
100
0
42Дробные значения, например громкость от 0 до 1:
void main() {
double volume = 1.7;
IO.println(Math.clamp(volume, 0.0, 1.0));
IO.println(Math.clamp(0.25, 0.0, 1.0));
}Результат:
1.0
0.25Если min больше max, метод бросает исключение:
void main() {
Math.clamp(5, 10, 1);
}Результат:
Exception in thread "main" java.lang.IllegalArgumentException: 10 > 1Примечания
До Java 21 то же записывали как Math.max(min, Math.min(max, value)). Версия для целых принимает long, а возвращает int, поэтому подходит и для приведения большого long к диапазону int без переполнения.
См. также
- Math.max() — Возвращает большее из двух чисел.
- Math.min() — Возвращает меньшее из двух чисел.
- Math.abs() — Возвращает модуль числа — значение без знака минус.
- IllegalArgumentException — Сообщает, что метод получил недопустимый аргумент.
В учебнике
- Операторы — Арифметические операторы Java, целочисленное деление и остаток, составное присваивание, инкремент, сравнение и логические операторы.