Math.hypot în Java

Calculează ipotenuza √(x² + y²), adică distanța de la origine la punctul (x, y), fără overflow intermediar.

Sintaxă
static double hypot(double x, double y)

Ce face Math.hypot

Math.hypot(x, y) returnează lungimea ipotenuzei unui triunghi dreptunghic cu catetele x și y: √(x² + y²). Cu ea calculezi distanța dintre două puncte: Math.hypot(x2 - x1, y2 - y1).

Diferența față de Math.sqrt(x*x + y*y): hypot nu calculează pătratele direct, deci nu dă overflow sau underflow pentru valori foarte mari sau foarte mici. În schimb, este puțin mai lentă.

Parametri

Parametru Descriere
x, y Cele două catete (sau diferențele de coordonate).

Ce returnează

Un double, ipotenuza.

Exemple

Exemplul 1: Triunghiul 3-4-5 și distanța dintre două puncte

public class Main {
    public static void main(String[] args) {
        System.out.println(Math.hypot(3, 4));
        double x1 = 1, y1 = 2, x2 = 7, y2 = 10;
        System.out.println("Distanța: " + Math.hypot(x2 - x1, y2 - y1));
    }
}

Rezultat

5.0
Distanța: 10.0

Exemplul 2: Valori uriașe

public class Main {
    public static void main(String[] args) {
        double mare = 1e200;
        System.out.println(Math.sqrt(mare * mare + mare * mare));
        System.out.println(Math.hypot(mare, mare));
    }
}

Rezultat

Infinity
1.414213562373095E200

Greșeli frecvente

  • Uiți să scazi coordonatele: hypot(x2, y2) este distanța până la origine, nu până la primul punct.

Comenzi înrudite

  • Math.sqrt: sqrt() calculează rădăcina pătrată, cbrt() rădăcina cubică (care funcționează și pentru numere negative).
  • Math.atan2: Returnează unghiul punctului (x, y) față de axa orizontală, între -π și π, ținând cont de cadranul în care se află.
  • Math.pow: Ridică un număr la o putere și returnează rezultatul ca double; exponentul poate fi și negativ sau cu zecimale.