Ce face math.Hypot
math.Hypot(p, q) returnează Sqrt(p*p + q*q), adică lungimea ipotenuzei unui triunghi dreptunghic cu catetele p și q, sau distanța de la origine la punctul (p, q).
Avantajul față de formula scrisă de mână: Hypot evită depășirea. Pentru p = 3e200, p*p devine +Inf, dar Hypot dă rezultatul corect (aproximativ 5e+200, cu o mică eroare de rotunjire pe ultima cifră).
Parametri
| Parametru | Descriere |
|---|---|
p, q |
Catetele (sau diferențele de coordonate). |
Ce returnează
Lungimea ipotenuzei, ca float64.
Exemple
Exemplul 1: Triunghiul 3-4-5 și distanța între două puncte
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Hypot(3, 4))
// distanța de la (2, 1) la (8, 9)
fmt.Println(math.Hypot(8-2, 9-1))
}
Rezultat
5
10
Exemplul 2: Fără depășire pentru numere mari
package main
import (
"fmt"
"math"
)
func main() {
p, q := 3e200, 4e200
fmt.Println(math.Sqrt(p*p + q*q))
fmt.Println(math.Hypot(p, q))
}
Rezultat
+Inf
4.9999999999999995e+200
Greșeli frecvente
- Scrii
math.Sqrt(p*p + q*q)pentru valori foarte mari sau foarte mici și obții+Infsau0.Hypotle tratează corect.