math.Sqrt în Go

math.Sqrt calculează rădăcina pătrată, iar math.Cbrt rădăcina cubică a unui număr float64.

Sintaxă
import "math"

func Sqrt(x float64) float64
func Cbrt(x float64) float64

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, iar NaN se propagă în toate calculele următoare.
  • Scrii math.Pow(x, 1/3): 1/3 între întregi este 0, deci rezultatul este 1. Scrie 1.0/3 sau, mai bine, folosește math.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).