Math.max în Java

max() și min() aleg cel mai mare sau cel mai mic dintre două numere; clamp() încadrează o valoare între două limite.

Sintaxă
static int max(int a, int b)   // și long, float, double
static int min(int a, int b)
static int clamp(long valoare, int min, int max)   // Java 21, și long, float, double

Ce face Math.max

Math.max(a, b) returnează numărul mai mare, iar Math.min(a, b) pe cel mai mic. Primesc exact două argumente; pentru mai multe numere le apelezi în lanț sau folosești un stream.

Math.clamp(valoare, min, max) (Java 21) „taie” valoarea la intervalul [min, max]: dacă e prea mică returnează min, dacă e prea mare returnează max. Înlocuiește combinația Math.max(min, Math.min(max, valoare)). Dacă min > max, aruncă IllegalArgumentException. Varianta cu long și limite int returnează un int, deci convertește sigur un long într-un int.

La double, dacă unul dintre argumente este NaN, rezultatul lui max/min este NaN.

Parametri

Parametru Descriere
a, b Cele două numere comparate.
valoare Pentru clamp: valoarea încadrată.
min, max Limitele intervalului (incluse).

Ce returnează

Una dintre valorile primite sau una dintre limite.

Exemple

Exemplul 1: Maximul și minimul

public class Main {
    public static void main(String[] args) {
        System.out.println(Math.max(7, 12));
        System.out.println(Math.min(7, 12));
        System.out.println(Math.max(-3.5, -2.0));
        int a = 4, b = 9, c = 6;
        System.out.println("Cel mai mare: " + Math.max(a, Math.max(b, c)));
    }
}

Rezultat

12
7
-2.0
Cel mai mare: 9

Exemplul 2: Nota încadrată între 1 și 10

O notă calculată cu bonusuri sau penalizări poate ieși din interval; clamp o readuce în limite.

public class Main {
    public static void main(String[] args) {
        int[] calculate = {11, 7, -2, 10};
        for (int n : calculate) {
            System.out.println(n + " -> " + Math.clamp(n, 1, 10));
        }
        double volum = Math.clamp(1.35, 0.0, 1.0);
        System.out.println("Volum: " + volum);
    }
}

Rezultat

11 -> 10
7 -> 7
-2 -> 1
10 -> 10
Volum: 1.0

Exemplul 3: Reducere de maximum 50 de lei

public class Main {
    public static void main(String[] args) {
        double[] cosuri = {120.0, 380.0, 999.0};
        for (double total : cosuri) {
            double reducere = Math.min(total * 0.10, 50.0);
            System.out.println(total + " lei: reducere " + reducere + " lei");
        }
    }
}

Rezultat

120.0 lei: reducere 12.0 lei
380.0 lei: reducere 38.0 lei
999.0 lei: reducere 50.0 lei

Greșeli frecvente

  • Apelezi Math.max(a, b, c): nu există variantă cu trei argumente. Scrie Math.max(a, Math.max(b, c)).
  • Inversezi limitele la clamp: Math.clamp(x, 10, 1) aruncă IllegalArgumentException.
  • Folosești Math.min când voiai Math.max pentru o limită inferioară: „cel puțin 0” se scrie Math.max(0, x).

Comenzi înrudite

  • Integer.compare: compare() compară două int-uri (negativ, 0, pozitiv); max, min și sum sunt variante scurte pentru referințe la metode.
  • Math.abs: Returnează valoarea absolută (fără semn) a unui număr; absExact aruncă excepție în cazul special al valorii minime.
  • Math.round: round() rotunjește la cel mai apropiat întreg (.5 în sus); rint() rotunjește .5 spre numărul par și returnează double.
  • Math: Clasa cu funcții matematice gata făcute: rotunjiri, puteri, radicali, trigonometrie, minim/maxim și calcule întregi sigure.