«

cmath库函数功能概述

灯点亮 发布于 阅读:47 C++


cmath 是 C++ 标准库中的一个头文件,提供了许多常用的数学函数,主要用于处理浮点数(float、double、long double)和复数(std::complex)。以下是 cmath 库的主要功能分类:

1. 基本数学运算

函数 功能
abs(x) 绝对值(适用于浮点数,整数用 的 abs)
fabs(x) 浮点数的绝对值
fmod(x, y) 计算 x/y 的浮点余数(模运算)
remainder(x, y) 返回 IEEE 浮点余数(更精确)
fma(x, y, z) 融合乘加运算:x*y + z(单次舍入)
fmax(x, y) 返回两个浮点数的最大值
fmin(x, y) 返回两个浮点数的最小值
fdim(x, y) 返回 x - y 和 0 的较大值(正差)

2. 指数与对数函数

函数 功能
exp(x) 计算 e 的 x 次方(eˣ)
exp2(x) 计算 2 的 x 次方(2ˣ)
expm1(x) 计算 eˣ - 1(高精度小 x)
log(x) 自然对数(ln x)
log10(x) 以 10 为底的对数
log2(x) 以 2 为底的对数
log1p(x) 计算 ln(1 + x)(高精度小 x)

3. 幂函数

函数 功能
pow(x, y) 计算 x 的 y 次方(xʸ)
sqrt(x) 平方根
cbrt(x) 立方根
hypot(x, y) 计算直角三角形的斜边长度(√(x² + y²))

4. 三角函数(弧度制)

函数 功能
sin(x) 正弦
cos(x) 余弦
tan(x) 正切
asin(x) 反正弦(结果在 [-π/2, π/2])
acos(x) 反余弦(结果在 [0, π])
atan(x) 反正切(结果在 [-π/2, π/2])
atan2(y, x) 计算 y/x 的反正切(确定象限,结果在 [-π, π])

5. 双曲函数

函数 功能
sinh(x) 双曲正弦
cosh(x) 双曲余弦
tanh(x) 双曲正切
asinh(x) 反双曲正弦
acosh(x) 反双曲余弦
atanh(x) 反双曲正切

6. 舍入与浮点处理

函数 功能
ceil(x) 向上取整(≥ x 的最小整数)
floor(x) 向下取整(≤ x 的最大整数)
trunc(x) 向零取整(丢弃小数部分)
round(x) 四舍五入到最接近的整数
lround(x) 四舍五入并返回 long
llround(x) 四舍五入并返回 long long
nearbyint(x) 使用当前舍入模式舍入
rint(x) 类似 nearbyint,但可能触发异常

7. 其他函数

函数 功能
frexp(x, &exp) 将 x 分解为尾数和指数(x = m 2^exp)
ldexp(x, exp) x
2^exp(frexp 的逆操作)
modf(x, &ipart) 将 x 分解为整数和小数部分
copysign(x, y) 返回 x 的绝对值加上 y 的符号
nextafter(x, y) 返回 x 向 y 方向的下一个可表示浮点数
nan("...") 生成一个 NaN(非数字)值

8. 宏与常量

常量/宏 描述
INFINITY 表示无穷大的浮点值
NAN 表示非数字(NaN)
HUGE_VAL 表示极大的浮点值(通常用于溢出)
数学常量(C++20 起) 如 std::numbers::pi、std::numbers::e 等
注意事项
复数运算:需包含 并使用 std::complex 类。

C++20 新增数学常量:如 π(std::numbers::pi)、e(std::numbers::e)等。

兼容性:部分函数(如 hypot)在 C++11 后支持多参数重载。

如果需要更详细的说明,可以参考 C++ 标准库文档。