Math în Java

Clasa cu funcții matematice gata făcute: rotunjiri, puteri, radicali, trigonometrie, minim/maxim și calcule întregi sigure.

Sintaxă
public final class Math
static final double PI = 3.141592653589793
static final double E = 2.718281828459045

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 ^ 10 pentru putere: în Java ^ este SAU exclusiv pe biți și dă 8. Folosește Math.pow(2, 10).
  • Uiți că Math.sqrt, Math.pow, Math.floor returnează 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.