Ce face std::log
std::log este logaritmul natural (ln), nu cel în baza 10, ca pe unele calculatoare. std::log10 spune, aproximativ, câte cifre are un număr, iar std::log2 câți biți sunt necesari sau de câte ori poți înjumătăți o valoare.
Pentru alte baze folosește formula log(x) / log(baza). log(0) dă -inf, iar logaritmul unui număr negativ dă NaN.
Parametri
| Parametru | Descriere |
|---|---|
x |
Un număr mai mare decât 0. |
Ce returnează
Logaritmul, ca double.
Exemple
Exemplul 1: Cele trei baze
#include <cmath>
#include <print>
int main() {
std::println("log(e^2) = {:.4f}", std::log(std::exp(2.0)));
std::println("log10(1000) = {}", std::log10(1000.0));
std::println("log2(1024) = {}", std::log2(1024.0));
std::println("log_3(81) = {:.4f}", std::log(81.0) / std::log(3.0));
std::println("log(0) = {}", std::log(0.0));
}
Rezultat
log(e^2) = 2.0000
log10(1000) = 3
log2(1024) = 10
log_3(81) = 4.0000
log(0) = -inf
Exemplul 2: Câte cifre și câți pași de căutare binară
#include <cmath>
#include <print>
int main() {
long long populatie = 19053815;
int cifre = static_cast<int>(std::log10(static_cast<double>(populatie))) + 1;
std::println("{} are {} cifre", populatie, cifre);
int elemente = 1'000'000;
double pasi = std::ceil(std::log2(static_cast<double>(elemente)));
std::println("Căutare binară în {} de elemente: cel mult {} de pași", elemente, pasi);
}
Rezultat
19053815 are 8 cifre
Căutare binară în 1000000 de elemente: cel mult 20 de pași
Exemplul 3: În câți ani se dublează o sumă
#include <cmath>
#include <print>
int main() {
double dobanda = 0.07;
double ani = std::log(2.0) / std::log(1.0 + dobanda);
std::println("La 7% pe an, banii se dublează în {:.1f} ani", ani);
}
Rezultat
La 7% pe an, banii se dublează în 10.2 ani
Greșeli frecvente
- Folosești
std::logcrezând că este în baza 10. Pentru baza 10 aistd::log10. - Calculezi numărul de cifre cu
log10pentru 0 sau numere negative:log10(0)este-inf. Tratează-le separat.
Comenzi înrudite
std::exp: Calculează e la puterea x, unde e ≈ 2,71828 este baza logaritmului natural.std::pow: Ridică un număr la o putere: baza la exponent. Exponentul poate fi și negativ sau cu zecimale.std::bit_width: Returnează câți biți sunt necesari pentru a reprezenta un număr fără semn (0 pentru 0).