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. ScrieMath.max(a, Math.max(b, c)). - Inversezi limitele la
clamp:Math.clamp(x, 10, 1)aruncăIllegalArgumentException. - Folosești
Math.mincând voiaiMath.maxpentru o limită inferioară: „cel puțin 0” se scrieMath.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.