C++ 标准库 <cmath>
C++ 标准库
C++ 标准库提供了丰富的功能,其中
要使用
#include
常用函数
函数功能示例abs(x)计算整数 x 的绝对值abs(-5) // 5fabs(x)计算浮点数 x 的绝对值fabs(-5.5) // 5.5fmod(x, y)计算 x 除以 y 的余数fmod(5.3, 2) // 1.3remainder(x, y)计算 x 除以 y 的余数remainder(5.5, 2) // 1.5fmax(x, y)返回 x 和 y 中的较大值fmax(3.5, 4.2) // 4.2fmin(x, y)返回 x 和 y 中的较小值fmin(3.5, 4.2) // 3.5hypot(x, y)计算 sqrt(xx + yy)hypot(3, 4) // 52. 指数和对数函数函数功能示例exp(x)计算 e^x,e 为自然对数的底数exp(1) // 2.71828…log(x)计算 x 的自然对数log(2.71828) // 1log10(x)计算 x 的以 10 为底的对数log10(100) // 2pow(x, y)计算 x 的 y 次方pow(2, 3) // 8sqrt(x)计算 x 的平方根sqrt(16) // 4cbrt(x)计算 x 的立方根cbrt(27) // 3expm1(x)计算 e^x - 1expm1(1) // 1.71828…log1p(x)计算 log(1 + x),适用于 x 接近 0 的情况log1p(0.00001) // 0.00001
3. 三角函数
函数
功能
示例
sin(x)
计算 x 的正弦值,x 以弧度为单位
sin(3.14159 / 2) // 1
cos(x)
计算 x 的余弦值,x 以弧度为单位
cos(3.14159) // -1
tan(x)
计算 x 的正切值,x 以弧度为单位
tan(0) // 0
asin(x)
计算 x 的反正弦值,返回弧度
asin(1) // 3.14159/2
acos(x)
计算 x 的反余弦值,返回弧度
acos(-1) // 3.14159
atan(x)
计算 x 的反正切值,返回弧度
atan(1) // 3.14159/4
atan2(y, x)
计算 y/x 的反正切值,返回弧度
atan2(1, 1) // 3.14159/4
- 双曲函数
函数
功能
示例
sinh(x)
计算 x 的双曲正弦
sinh(0) // 0
cosh(x)
计算 x 的双曲余弦
cosh(0) // 1
tanh(x)
计算 x 的双曲正切
tanh(1) // 0.7616
asinh(x)
计算 x 的反双曲正弦
asinh(1) // 0.8814
acosh(x)
计算 x 的反双曲余弦,x ≥ 1
acosh(1) // 0
atanh(x)
计算 x 的反双曲正切,x 在 (-1, 1)
atanh(0.5) // 0.5493
- 取整和浮点数操作
函数
功能
示例
ceil(x)
返回不小于 x 的最小整数
ceil(2.3) // 3
floor(x)
返回不大于 x 的最大整数
floor(2.3) // 2
trunc(x)
返回去除小数部分的整数值
trunc(2.8) // 2
round(x)
返回四舍五入到最接近的整数
round(2.5) // 3
lround(x)
返回四舍五入到 long 类型
lround(2.5) // 3
llround(x)
返回四舍五入到 long long 类型
llround(2.5) // 3
nearbyint(x)
返回舍入到最接近整数(但不引发浮点异常)
nearbyint(2.5) // 2
rint(x)
返回四舍五入到整数,符合当前舍入方式
rint(2.5) // 3
modf(x, &intpart)
将 x 的整数和小数部分分离
modf(2.3, &intpart)
- 浮点数检查
函数
功能
示例
isfinite(x)
检查 x 是否为有限值(非无穷大或非 NaN)
isfinite(3.0) // true
isinf(x)
检查 x 是否为无穷大
isinf(1.0 / 0.0) // true
isnan(x)
检查 x 是否为 NaN
isnan(0.0 / 0.0) // true
isnormal(x)
检查 x 是否为正常的非零浮点数
isnormal(1.0) // true
signbit(x)
检查 x 的符号是否为负
signbit(-5.3) // true
实例
下面是一个使用
实例 1
#include
#include
int main() {
double num = 9.0;
double root = sqrt(num); // 计算平方根
double sinValue = sin(M_PI / 2); // 计算正弦值,M_PI 是 π 的近似值
double absValue = abs(-5.0); // 计算绝对值
std::cout << “The square root of “ << num << “ is “ << root << std::endl;
std::cout << “The sine of “ << M_PI / 2 << “ is “ << sinValue << std::endl;
std::cout << “The absolute value of -5.0 is “ << absValue << std::endl;
return 0;
}
输出结果:
The square root of 9 is 3
The sine of 1.570796 is 1
The absolute value of -5 is 5
实例 2
#include
#include
int main() {
// 基本数学运算
std::cout << “abs(-5) = “ << abs(-5) << std::endl;
std::cout << “fmod(5.3, 2) = “ << fmod(5.3, 2) << std::endl;
// 指数和对数函数
std::cout << “exp(1) = “ << exp(1) << std::endl;
std::cout << “log(2.71828) = “ << log(2.71828) << std::endl;
std::cout << “pow(2, 3) = “ << pow(2, 3) << std::endl;
// 三角函数
std::cout << “sin(3.14159 / 2) = “ << sin(3.14159 / 2) << std::endl;
std::cout << “cos(3.14159) = “ << cos(3.14159) << std::endl;
// 取整函数
std::cout << “ceil(2.3) = “ << ceil(2.3) << std::endl;
std::cout << “floor(2.3) = “ << floor(2.3) << std::endl;
// 浮点数检查
double x = 1.0 / 0.0;
if (isinf(x)) {
std::cout << “x is infinite” << std::endl;
}
return 0;
}
注意事项
某些函数,如 pow 和 log,可以接受整数作为参数,但结果仍然是浮点数。