Ce face math.Sqrt
math.Sqrt(x) returnează numărul care, înmulțit cu el însuși, dă x: math.Sqrt(16) este 4. Este funcția de care ai nevoie pentru distanțe, teorema lui Pitagora sau abaterea standard.
Rădăcina pătrată a unui număr negativ nu există printre numerele reale, așa că math.Sqrt(-4) nu dă eroare, ci returnează NaN (Not a Number). Verifică rezultatul cu math.IsNaN dacă datele pot fi negative.
math.Cbrt(x) este rădăcina cubică și funcționează și pentru numere negative: math.Cbrt(-27) dă -3. Este mai precisă decât math.Pow(x, 1.0/3), care pentru numere negative dă NaN.
Parametri
| Parametru | Descriere |
|---|---|
x |
Numărul din care extragi rădăcina. Pentru Sqrt trebuie să fie ≥ 0, altfel rezultatul este NaN. |
Ce returnează
Rădăcina pătrată (Sqrt) sau cubică (Cbrt), ca float64.
Exemple
Exemplul 1: Rădăcini pătrate și cubice
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Sqrt(16))
fmt.Printf("%.4f\n", math.Sqrt(2))
fmt.Println(math.Sqrt(-4))
fmt.Println(math.Cbrt(27))
fmt.Println(math.Cbrt(-27))
}
Rezultat
4
1.4142
NaN
3
-3
Exemplul 2: Distanța dintre două puncte
Teorema lui Pitagora: distanța este rădăcina sumei pătratelor diferențelor (în kilometri, pe o hartă plană).
package main
import (
"fmt"
"math"
)
func main() {
x1, y1 := 0.0, 0.0 // Iași
x2, y2 := 30.0, 40.0 // un sat din apropiere
d := math.Sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))
fmt.Printf("Distanța: %.1f km\n", d)
}
Rezultat
Distanța: 50.0 km
Greșeli frecvente
- Te aștepți la o eroare pentru
Sqrt(-1): Go returneazăNaN, iarNaNse propagă în toate calculele următoare. - Scrii
math.Pow(x, 1/3):1/3între întregi este0, deci rezultatul este1. Scrie1.0/3sau, mai bine, foloseștemath.Cbrt.
Comenzi înrudite
math.Pow: math.Pow ridică x la puterea y, iar math.Pow10 calculează 10 la puterea n.math.Hypot: Calculează ipotenuza: rădăcina din p² + q², fără depășiri pentru numere foarte mari sau foarte mici.math.Inf: Valorile speciale ale lui float64: infinit (Inf, IsInf) și „nu este un număr” (NaN, IsNaN).