C++20 STL <numbers> 数学常量库
2026/7/9 6:27:27 网站建设 项目流程

C++20 STL numbers 数学常量库

  • 1. numbers 概述
  • 2. 常见分类与常量速览
  • 3. C++示例

1. numbers 概述

<numbers>是 C++20 新增的标准头文件,定义了一组常用数学常量。命名空间是std::numbers。在实际工程应用中,应该用标准替代经验,用规范替代习惯。用<numbers>替代手写常量,统一数学表达方式,提升可读性与可靠性

核心特点:

  • constexpr 编译期常量
  • 类型安全(支持模板变量)
  • 精度由标准库保证
  • 无宏污染、无全局符号冲突

为什么 比宏更好?

对比项宏定义<numbers>
类型安全
命名空间
编译期部分
精度保证人工标准
工程规范

❌ 传统写法:

#definePI3.1415926

✅ 现代写法:

constexprautopi=std::numbers::pi;

<numbers><cmath>的关系

<numbers><cmath>
常量函数
编译期运行期
类型安全普通函数

2. 常见分类与常量速览

π 相关

std::numbers::pi// πstd::numbers::inv_pi// 1 / πstd::numbers::inv_sqrtpi// 1 / √π

自然常数e 相关

std::numbers::e// estd::numbers::log2e// log2(e)std::numbers::log10e// log10(e)

对数 相关

std::numbers::ln2// ln(2)std::numbers::ln10// ln(10)

根号 相关

std::numbers::sqrt2// √2std::numbers::sqrt3// √3std::numbers::inv_sqrt2// 1 / √2

3. C++示例

  1. 角度 ↔ 弧度转换

    constexprdoubleDeg2Rad(doubledeg){returndeg*std::numbers::pi/180.0;}constexprdoubleRad2Deg(doublerad){returnrad*180.0/std::numbers::pi;}
  2. 几何 / 位姿 / 旋转计算

    doubleyaw=Deg2Rad(90.0);doublec=std::cos(yaw);doubles=std::sin(yaw);
  3. 中常用常量汇总(20 个)

pi,inv_pi,inv_sqrtpi,e,log2e,log10e,ln2,ln10,sqrt2,sqrt3,inv_sqrt2,pi_v<float>,pi_v<double>,e_v<float>,e_v<double>,ln2_v<float>,ln10_v<double>,sqrt2_v<float>,sqrt3_v<double>

    需要专业的网站建设服务?

    联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

    立即咨询