Ce face std::numbers::pi
Înainte de C++20 nu exista o constantă standard pentru π: se folosea M_PI (nestandard) sau se scria de mână. Antetul <numbers> definește std::numbers::pi, de tip double, cu precizia maximă posibilă.
Pentru alte tipuri există variantele șablon: std::numbers::pi_v<float>, pi_v<long double>. Alte constante: e, sqrt2, sqrt3, ln2, ln10, log2e, phi (secțiunea de aur), inv_pi, egamma.
Ce returnează
Constante constexpr.
Exemple
Exemplul 1: Aria și circumferința unui cerc
#include <numbers>
#include <print>
int main() {
double raza = 2.5;
std::println("Aria: {:.2f} m²", std::numbers::pi * raza * raza);
std::println("Circumferința: {:.2f} m", 2 * std::numbers::pi * raza);
}
Rezultat
Aria: 19.63 m²
Circumferința: 15.71 m
Exemplul 2: Alte constante
#include <numbers>
#include <print>
int main() {
std::println("pi = {}", std::numbers::pi);
std::println("pi_v<float> = {}", std::numbers::pi_v<float>);
std::println("e = {}", std::numbers::e);
std::println("sqrt2 = {}", std::numbers::sqrt2);
std::println("phi = {}", std::numbers::phi);
}
Rezultat
pi = 3.141592653589793
pi_v<float> = 3.1415927
e = 2.718281828459045
sqrt2 = 1.4142135623730951
phi = 1.618033988749895
Greșeli frecvente
- Scrii
std::numbers::pi(), cu paranteze: este o variabilă, nu o funcție. - Folosești
M_PIși codul nu compilează pe alt sistem (de exemplu MSVC fără_USE_MATH_DEFINES).
Comenzi înrudite
std::sin: Funcțiile trigonometrice sinus, cosinus și tangentă; unghiul se dă în radiani, nu în grade.std::exp: Calculează e la puterea x, unde e ≈ 2,71828 este baza logaritmului natural.std::complex: Numere complexe (a + bi), cu operațiile aritmetice obișnuite, modul, argument și funcții matematice.