Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Math.clamp()

Ограничивает число диапазоном: меньше min — вернёт min, больше max — вернёт max.

Доступно с: Java 21

Синтаксис

public static int clamp(long value, int min, int max)

Параметры

ПараметрТипОписание
valuelong, double, floatИсходное число.
minint, long, double, floatНижняя граница.
maxsame 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, целочисленное деление и остаток, составное присваивание, инкремент, сравнение и логические операторы.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.