Math.sqrt în Java

sqrt() calculează rădăcina pătrată, cbrt() rădăcina cubică (care funcționează și pentru numere negative).

Sintaxă
static double sqrt(double a)
static double cbrt(double a)   // Java 5

Ce face Math.sqrt

Math.sqrt(x) returnează rădăcina pătrată a lui x. Pentru un număr negativ rezultatul este NaN, nu o excepție. Rezultatul este rotunjit corect, deci pentru pătrate perfecte (sqrt(144)) obții exact 12.0.

Math.cbrt(x) (de la „cube root”) returnează rădăcina cubică. Spre deosebire de Math.pow(x, 1.0/3), funcționează și pentru numere negative: cbrt(-27) este -3.0.

Parametri

Parametru Descriere
a Numărul.

Ce returnează

Un double; sqrt dă NaN pentru numere negative.

Exemple

Exemplul 1: Rădăcini pătrate și cubice

public class Main {
    public static void main(String[] args) {
        System.out.println(Math.sqrt(144));
        System.out.println(Math.sqrt(2));
        System.out.println(Math.sqrt(-4));
        System.out.println(Math.cbrt(27));
        System.out.println(Math.cbrt(-27));
        System.out.println(Math.pow(-27, 1.0 / 3));
    }
}

Rezultat

12.0
1.4142135623730951
NaN
3.0
-3.0
NaN

Exemplul 2: Latura unui teren pătrat

public class Main {
    public static void main(String[] args) {
        double arie = 500;
        double latura = Math.sqrt(arie);
        System.out.printf("Un teren pătrat de %.0f m² are latura de %.2f m%n", arie, latura);
        double volum = 1000;
        System.out.println("Cubul de " + volum + " litri are latura " + Math.cbrt(volum) + " dm");
    }
}

Rezultat

Un teren pătrat de 500 m² are latura de 22.36 m
Cubul de 1000.0 litri are latura 10.0 dm

Exemplul 3: Este pătrat perfect?

public class Main {
    static boolean patratPerfect(int n) {
        int r = (int) Math.sqrt(n);
        return r * r == n;
    }

    public static void main(String[] args) {
        for (int n : new int[] {49, 50, 1024, 2026}) {
            System.out.println(n + ": " + patratPerfect(n));
        }
    }
}

Rezultat

49: true
50: false
1024: true
2026: false

Greșeli frecvente

  • Te aștepți la excepție pentru sqrt(-1): primești NaN, care se propagă în calcule. Verifică argumentul sau rezultatul cu Double.isNaN.
  • Pentru distanța dintre două puncte scrii Math.sqrt(dx*dx + dy*dy) cu valori uriașe și primești Infinity; Math.hypot evită problema.

Comenzi înrudite

  • Math.pow: Ridică un număr la o putere și returnează rezultatul ca double; exponentul poate fi și negativ sau cu zecimale.
  • Math.hypot: Calculează ipotenuza √(x² + y²), adică distanța de la origine la punctul (x, y), fără overflow intermediar.
  • Double.isNaN: Verifică dacă un double este NaN („nu este număr”), rezultatul unor calcule fără sens, ca 0.0 / 0.0.
  • Math: Clasa cu funcții matematice gata făcute: rotunjiri, puteri, radicali, trigonometrie, minim/maxim și calcule întregi sigure.