全部评论 7

  • IEEE 不是搞那啥浮点数的吗?

    2026-07-28 来自 江西

    1
  • minmax似乎是数列最值,时间复杂度O(n)

    2026-07-27 来自 上海

    1
  • 似乎可以讲细一点

    2026-07-27 来自 江西

    1
  • 这么好的总结整理,怎么没人看??太可惜了!

    顶!

    2026-07-27 来自 浙江

    1
  • 支持~

    2026-07-27 来自 浙江

    1
  • 2026-07-27 来自 浙江

    1
  • 目前有几处明确错误,另外遗漏也比较多。

    必须修改的错误

    原文 问题 建议改成
    requo ❌ 函数名不存在 remquo
    fmin 求两个浮点数较大 ❌ 写反了 fmin 求较小值
    fmax 求两个浮点数较小 ❌ 写反了 fmax 求较大值
    (C++26起) hypot 三维 ❌ 版本错误 三参数 hypot(x,y,z) C++17 就有
    truns ❌ 拼写错误 trunc
    hermine ❌ 拼写错误 hermite
    pi Π ❌ 数学符号错误 pi 对应 π,不是 Π
    e e自然对数 ❌ 含义错误 e 是自然常数/自然对数的底
    egammma ❌ 多了一个 m egamma
    gcd/lcm (C++20) ❌ 版本错误 gcd/lcmC++17
    accumulate (C++20) ❌ 不是 C++20 新增 它早在 C++20 之前就已存在

    当前标准草案中明确列出了 remquotruncfminfmax 和三参数 hypot;WG21 的 C17 特性记录也明确把三参数 hypot 标为 C17 特性。([eel.is][1]) gcdlcm 是为 C17 提交并采用的 <numeric> 功能,而非 C20。

    还有一个容易误导初学者的地方:

    round = 四舍五入

    不算完全准确。C++ 的 round舍入到最近整数,恰好在中间时向远离 0 的方向取整。因此例如 round(-1.5) 得到 -2lroundllround 的核心区别还在于返回类型分别是 longlong long。标准 <cmath> 同时还有 nearbyintrintlrintllrint 等不同舍入函数。

    4天前 来自 浙江

    0
    • 遗漏比较明显

      如果标题叫“常用 C++ 数学函数”,现在这样可以;如果叫“大全”,则缺得比较多。单是 <cmath> 就还包括这些很常用的:

      • 三角:atan2
      • 双曲函数:sinhcoshtanhasinhacoshatanh
      • 指数对数:expm1log1plogb
      • 浮点分解:frexpldexpmodfscalbn
      • 特殊函数:erferfclgamma
      • 取整:nearbyintrintlrintllrint
      • 浮点操作:copysignnextafternexttowardfdim
      • 浮点判断:isnanisinfisfiniteisnormalsignbitfpclassify
      • C++20:lerp

      这些都可以直接在当前 <cmath> 标准库 synopsis 中看到。

      你的“特殊函数”一栏尤其不完整。除了 betahermite,标准库还包括 assoc_laguerreassoc_legendrecomp_ellint_1/2/3cyl_bessel_i/j/kcyl_neumannellint_1/2/3expintlaguerrelegendreriemann_zetasph_besselsph_legendresph_neumann 等。数学特殊函数是 C++17 加入的重要一组功能。

      <numbers> 常数也漏了一半

      C++20 的 <numbers> 不只有你列的几个。标准提供的主要常数包括:

      elog2elog10epiinv_piinv_sqrtpiln2ln10sqrt2sqrt3inv_sqrt3egammaphi

      所以这一栏建议改成:

      常量 含义
      std::numbers::e 自然常数 e
      std::numbers::pi 圆周率 π
      std::numbers::inv_pi 1/π
      std::numbers::phi 黄金比例 φ
      std::numbers::egamma 欧拉–马歇罗尼常数 γ
      std::numbers::sqrt2 √2
      std::numbers::sqrt3 √3
      std::numbers::ln2 ln 2
      std::numbers::ln10 ln 10

      另外,不建议把所有东西都归到一个“C++数学函数”头文件概念下。它们实际上分属不同头文件:max/min 主要在 <algorithm>,绝大多数浮点数学函数和特殊函数在 <cmath>gcd/lcm/accumulate<numeric>,数学常量在 <numbers>。这样整理文章会比按纯数学概念分类更适合 C++ 初学者。当前标准也将 <cmath>、数值算法和数学常量作为不同设施组织。

      最值得马上改的 10 个地方就是:

      requo → remquotruns → trunchermine → hermiteegammma → egammafmin/fmax 说明对调、hypot 三参数 C++26 → C++17gcd/lcm C++20 → C++17pi Π → πe 自然对数 → 自然对数的底、把 accumulate 从“C++20 新增”里移出去。

      改完这些,准确度就会高很多。

      4天前 来自 浙江

      0
    • 4天前 来自 浙江

      0
    • 谢谢指出

      3天前 来自 浙江

      0

热门讨论