Ce face math.Log
Logaritmul răspunde la întrebarea „la ce putere trebuie ridicată baza ca să obțin x?”. math.Log folosește baza e (logaritm natural, ln), math.Log10 baza 10, iar math.Log2 baza 2. math.Log10(1000) este 3, math.Log2(1024) este 10.
Pentru altă bază împarți doi logaritmi: logb(x) = math.Log(x) / math.Log(b).
math.Log1p(x) calculează ln(1 + x) precis când x este foarte mic. Cazuri speciale pentru toate: Log(0) dă -Inf, iar logaritmul unui număr negativ dă NaN.
Parametri
| Parametru | Descriere |
|---|---|
x |
Numărul pozitiv al cărui logaritm îl calculezi (pentru Log1p: x > -1). |
Ce returnează
Logaritmul, ca float64.
Exemple
Exemplul 1: Logaritmi în bazele obișnuite
package main
import (
"fmt"
"math"
)
func main() {
fmt.Printf("%.4f\n", math.Log(math.E))
fmt.Printf("%.4f\n", math.Log(10))
fmt.Println(math.Log10(1000))
fmt.Println(math.Log2(1024))
fmt.Println(math.Log(0), math.Log(-1))
}
Rezultat
1.0000
2.3026
3
10
-Inf NaN
Exemplul 2: Câte cifre are un număr și logaritm în altă bază
Un număr pozitiv n are floor(log10(n)) + 1 cifre. Logaritmul în baza 3 îl obții împărțind doi logaritmi naturali.
package main
import (
"fmt"
"math"
)
func main() {
for _, n := range []float64{7, 2026, 1500000} {
cifre := int(math.Floor(math.Log10(n))) + 1
fmt.Printf("%.0f: %d cifre\n", n, cifre)
}
fmt.Printf("log3(81) = %.4f\n", math.Log(81)/math.Log(3))
}
Rezultat
7: 1 cifre
2026: 4 cifre
1500000: 7 cifre
log3(81) = 4.0000
Exemplul 3: Log1p pentru valori foarte mici
package main
import (
"fmt"
"math"
)
func main() {
x := 1e-15
fmt.Println(math.Log(1 + x))
fmt.Println(math.Log1p(x))
}
Rezultat
1.110223024625156e-15
9.999999999999995e-16
Greșeli frecvente
- Aștepți ca
math.Logsă fie în baza 10 (ca butonul „log” de pe calculator): în Go,Logeste logaritmul natural. Pentru baza 10 foloseșteLog10. - Nu verifici datele:
Logdintr-un număr ≤ 0 dă-InfsauNaN, nu o eroare.
Comenzi înrudite
math.Exp: math.Exp calculează e la puterea x, math.Exp2 calculează 2 la puterea x, iar math.Expm1 calculează e^x – 1 precis.math.Frexp: Funcții pentru exponentul binar al unui float64: Frexp îl desparte în mantisă și exponent, Ldexp le reunește, Logb și Ilogb dau exponentul.math.Pow: math.Pow ridică x la puterea y, iar math.Pow10 calculează 10 la puterea n.