注意
C++提供了很多实用的数学函数,如果要使用先添加头文件<cmath>或<math.h>
或者直接使用#include<bits/stdc++.h>即可
一、平方、开平方
exp(x); //求常数e的x次方
pow(x, y); //求x的y次方
sqrt(x); //开平方
二、对数
log(x); //求e为底的对数 ln
log10(x); //求10为底的对数 lg
log(y)/log(x); //求x为底的y的对数
三、绝对值
int abs(x); //整数型的绝对值
double fabs(double x); //浮点型的绝对值
四、取整
ceil(x); //向上取整 返回的是大于或等于x的最小整数
floor(x); //向下取整 返回的是小于或等于x的最大整数
fix(x); //朝零方向取整
round(x); //四舍五入到最近的整数
//使用round保留2位小数
double num = 3.1415926;
double roundedNum = round(num * 100) / 100;
cout << roundedNum << endl; //输出 3.14
五、取余、取小数
m = fmod (x, y); //返回两参数相除的余数
f = modf (x, * iptr); //小数部分返回给f,整数部分的指针指向iptr
f = modf (x, & a); //小数部分返回给f,整数部分为a
六、三角函数、反三角函数
//三角函数
sin(x); //正弦
cos(x); //余弦。cos(π)=-1,故 π = acos(-1)
tan(x); //正切
//反三角函数
asin(x); //反正弦 [−π/2, π/2]
acos(x); //反余弦 [0, π]
atan(x); //反正切(主值) [−π/2, π/2]
atan2(x); //反正切(整圆值) [−π, π]
代码实操
代码
#include <iostream>
#include <cmath> // 包含数学函数的头文件
using namespace std;
int main() {
// 绝对值函数
int x = -10;
int abs_x = abs(x); // abs_x = 10
cout << "abs(-10) = " << abs_x << endl;
// 平方根函数
double y = 25.0;
double sqrt_y = sqrt(y); // sqrt_y = 5.0
cout << "sqrt(25.0) = " << sqrt_y << endl;
// 次方函数
double base = 2.0;
double exponent = 3.0;
double pow_result = pow(base, exponent); // pow_result = 8.0
cout << "pow(2.0, 3.0) = " << pow_result << endl;
// 自然对数函数
double z = 10.0;
double log_z = log(z); // log_z ≈ 2.30259
cout << "log(10.0) = " << log_z << endl;
// 底数为 10 的对数函数
double log10_z = log10(z); // log10_z ≈ 1.0
cout << "log10(10.0) = " << log10_z << endl;
// 正弦函数(角度为弧度制)
double angle = 0.5;
double sin_angle = sin(angle); // sin_angle ≈ 0.479426
cout << "sin(0.5) = " << sin_angle << endl;
// 余弦函数(角度为弧度制)
double cos_angle = cos(angle); // cos_angle ≈ 0.877583
cout << "cos(0.5) = " << cos_angle << endl;
// 正切函数(角度为弧度制)
double tan_angle = tan(angle); // tan_angle ≈ 0.546302
cout << "tan(0.5) = " << tan_angle << endl;
// 反正弦函数(返回值是弧度制的角度)
double asin_value = asin(sin_angle); // asin_value ≈ 0.5
cout << "asin(0.479426) = " << asin_value << " rad" << endl;
// 反余弦函数(返回值是弧度制的角度)
double acos_value = acos(cos_angle); // acos_value ≈ 0.5
cout << "acos(0.877583) = " << acos_value << " rad" << endl;
// 反正切函数(返回值是弧度制的角度)
double atan_value = atan(tan_angle); // atan_value ≈ 0.5
cout << "atan(0.546302) = " << atan_value << " rad" << endl;
// 反正切函数,根据两个参数的比值确定象限
double y1 = 1.0, x1 = 1.0;
double atan2_value = atan2(y1, x1); // atan2_value ≈ 0.785398
cout << "atan2(1.0, 1.0) = " << atan2_value << " rad" << endl;
// 双曲正弦函数
double sinh_value = sinh(angle); // sinh_value ≈ 0.521095
cout << "sinh(0.5) = " << sinh_value << endl;
// 双曲余弦函数
double cosh_value = cosh(angle); // cosh_value ≈ 1.12763
cout << "cosh(0.5) = " << cosh_value << endl;
// 双曲正切函数
double tanh_value = tanh(angle); // tanh_value ≈ 0.462117
cout << "tanh(0.5) = " << tanh_value << endl;
// 向上取整函数
double ceil_value = ceil(2.3); // ceil_value = 3.0
cout << "ceil(2.3) = " << ceil_value << endl;
// 向下取整函数
double floor_value = floor(2.7); // floor_value = 2.0
cout << "floor(2.7) = " << floor_value << endl;
// 四舍五入函数
double round_value = round(2.5); // round_value = 3.0
cout << "round(2.5) = " << round_value << endl;
return 0;
}