Ce face Math
Math grupează funcțiile matematice ale limbajului. Toate metodele sunt statice: nu creezi un obiect, ci scrii direct Math.sqrt(16). Clasa face parte din java.lang, deci nu are nevoie de import. Are și două constante: Math.PI (π) și Math.E (baza logaritmului natural).
Metodele se împart în câteva familii: rotunjiri (round, floor, ceil), puteri și radicali (pow, sqrt, cbrt), exponențiale și logaritmi (exp, log), trigonometrie (sin, cos, atan2), comparații (max, min, clamp, abs) și operații întregi Exact (addExact, multiplyExact), care aruncă excepție în loc să dea overflow în tăcere.
Majoritatea funcțiilor lucrează cu double. Dacă pui rezultatul într-un int, ai nevoie de o conversie explicită, de exemplu (int) Math.floor(x). Există și clasa StrictMath, cu aceleași funcții, dar cu rezultate identice bit cu bit pe orice platformă.
Ce returnează
PI și E sunt constante double.
Exemple
Exemplul 1: Aria și lungimea unui cerc
public class Main {
public static void main(String[] args) {
double raza = 2.5;
double arie = Math.PI * Math.pow(raza, 2);
double lungime = 2 * Math.PI * raza;
System.out.println("Aria: " + Math.round(arie * 100) / 100.0 + " m²");
System.out.println("Lungimea: " + Math.round(lungime * 100) / 100.0 + " m");
System.out.println(Math.PI + " " + Math.E);
}
}
Rezultat
Aria: 19.63 m²
Lungimea: 15.71 m
3.141592653589793 2.718281828459045
Exemplul 2: Câteva funcții într-un singur program
public class Main {
public static void main(String[] args) {
System.out.println(Math.sqrt(144));
System.out.println(Math.abs(-17));
System.out.println(Math.max(4, 9));
System.out.println(Math.floor(7.8) + " " + Math.ceil(7.2) + " " + Math.round(7.5));
System.out.println(Math.pow(2, 10));
}
}
Rezultat
12.0
17
9
7.0 8.0 8
1024.0
Greșeli frecvente
- Încerci
new Math(): clasa nu poate fi instanțiată, metodele se apelează direct pe ea. - Scrii
2 ^ 10pentru putere: în Java^este SAU exclusiv pe biți și dă 8. FoloseșteMath.pow(2, 10). - Uiți că
Math.sqrt,Math.pow,Math.floorreturneazădouble:int x = Math.floor(2.5);nu compilează.
Comenzi înrudite
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.pow: Ridică un număr la o putere și returnează rezultatul ca double; exponentul poate fi și negativ sau cu zecimale.Math.sqrt: sqrt() calculează rădăcina pătrată, cbrt() rădăcina cubică (care funcționează și pentru numere negative).Math.max: max() și min() aleg cel mai mare sau cel mai mic dintre două numere; clamp() încadrează o valoare între două limite.Math.addExact: Adunare, scădere, înmulțire, incrementare și negare care aruncă ArithmeticException la overflow în loc să dea rezultat greșit.