C++中常用的数学函数
在C++中,常用的数学函数主要通过 <cmath>
头文件提供(C++中也可用
<math.h>
,但推荐使用C++风格的头文件)。以下是一些常用的数学函数及其说明:
1. 基本运算
函数 | 描述 | 示例 |
---|---|---|
abs(x) |
绝对值(整数,<cstdlib> ) |
abs(-5) →
5 |
fabs(x) |
浮点数的绝对值 | fabs(-3.14) →
3.14 |
fmod(x, y) |
浮点数取余 | fmod(10.5, 3.0) →
1.5 |
remainder(x, y) |
带符号的余数(IEEE规范) | remainder(10.5, 3.0) →
-0.5 |
fmax(x, y) |
返回最大值 | fmax(2.0, 3.0) →
3.0 |
fmin(x, y) |
返回最小值 | fmin(2.0, 3.0) →
2.0 |
2. 指数与对数
函数 | 描述 | 示例 |
---|---|---|
exp(x) |
e的x次方 | exp(1.0) →
~2.718 |
log(x) |
自然对数(ln(x)) | log(10.0) →
~2.302 |
log10(x) |
以10为底的对数 | log10(100.0) →
2.0 |
pow(x, y) |
x的y次方 | pow(2.0, 3.0) →
8.0 |
sqrt(x) |
平方根 | sqrt(16.0) →
4.0 |
cbrt(x) |
立方根(C++11) | cbrt(27.0) →
3.0 |
3. 三角函数(角度单位为弧度)
函数 | 描述 | 示例 |
---|---|---|
sin(x) |
正弦 | sin(M_PI/2) →
1.0 |
cos(x) |
余弦 | cos(M_PI) →
-1.0 |
tan(x) |
正切 | tan(M_PI/4) →
~1.0 |
asin(x) |
反正弦(结果在[-π/2, π/2]) | asin(0.5) →
~0.523 |
acos(x) |
反余弦(结果在[0, π]) | acos(0.5) →
~1.047 |
atan(x) |
反正切(结果在[-π/2, π/2]) | atan(1.0) →
~0.785 |
atan2(y, x) |
计算y/x 的反正切(考虑象限) |
atan2(1.0, 1.0) →
~0.785 |
注意:
M_PI
是π的常量,但非标准,需自行定义或使用std::numbers::pi
(C++20)。
4. 双曲函数
函数 | 描述 | 示例 |
---|---|---|
sinh(x) |
双曲正弦 | sinh(1.0) →
~1.175 |
cosh(x) |
双曲余弦 | cosh(0.0) →
1.0 |
tanh(x) |
双曲正切 | tanh(1.0) →
~0.761 |
5. 取整与舍入
函数 | 描述 | 示例 |
---|---|---|
ceil(x) |
向上取整 | ceil(2.3) →
3.0 |
floor(x) |
向下取整 | floor(2.9) →
2.0 |
round(x) |
四舍五入 | round(2.5) →
3.0 |
trunc(x) |
截断小数部分 | trunc(2.9) →
2.0 |
nearbyint(x) |
快速舍入(依赖当前模式) | nearbyint(2.5) →
依赖设置 |
6. 其他函数
函数 | 描述 | 示例 |
---|---|---|
erf(x) |
误差函数 | erf(1.0) →
~0.842 |
tgamma(x) |
Gamma函数 | tgamma(5.0) →
24.0 (即4!) |
hypot(x, y) |
计算√(x² + y²)(避免溢出) | hypot(3, 4) →
5.0 |
copysign(x, y) |
将y的符号赋给x | copysign(-2.0, 3.0) →
2.0 |
注意事项
兼容性:部分函数(如
cbrt
、hypot
)需要C++11或更高版本。错误处理:传入无效参数(如
sqrt(-1.0)
)可能返回NaN
或触发异常(依赖实现)。常量:如
M_PI
需自行定义:
const double PI = std::acos(-1.0); // 或使用C++20的std::numbers::pi
示例代码
|
如果需要更高级的数学功能(如复数、随机数、线性代数),可以探索
<complex>
、<random>
和第三方库(如Eigen)。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 qyhome!