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.