math函数
- 一. 基础数学函数
- 1. `fabs(double x)` — 绝对值
- 2. `fmod(double x, double y)` — 余数
- 3. `pow(double x, double y)` — 幂运算
- 4. `sqrt(double x)` — 平方根
- 5. `cbrt(double x)` — 立方根
- 6. `hypot(double x, double y)` — 计算斜边
- 二. 对数和指数函数
- 1. `exp(double x)` — 指数
- 2. `log(double x)` — 自然对数
- 3. `log10(double x)` — 常用对数
- 4. `log2(double x)` — 二进制对数
- 三. 三角函数
- 1. `sin(double x)` — 正弦
- 2. `cos(double x)` — 余弦
- 3. `tan(double x)` — 正切
- 四. 舍入函数
- 1. `ceil(double x)` — 向上取整
- 2. `floor(double x)` — 向下取整
- 总结
- 1. 基本数学运算
- 2. 对数和指数运算
- 3. 三角函数
- 4. 取整与舍入
- 5. 特殊数学函数
- 6. 常量
- 使用注意事项
在 C 语言中,math.h 是标准库中用于数学运算的头文件,提供了许多数学相关的函数。这些函数非常实用,可以帮助我们处理各种数学计算,如幂运算、三角函数、对数、取整等。在这里我整理了
math.h
中常用函数的分类及讲解:
一. 基础数学函数
这些函数是数学运算中最基本的操作,涵盖了绝对值、幂运算、平方根等。
1. fabs(double x)
— 绝对值
- 功能:计算一个浮点数
x
的绝对值。 - 返回值:返回
x
的绝对值,类型为double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = fabs(-5.4);printf("Absolute value: %.2f\n", result); // 输出: 5.40return 0; }
2. fmod(double x, double y)
— 余数
- 功能:计算
x
除以y
的余数,类似于取模操作。 - 返回值:返回
x
除以y
的余数,类型为double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = fmod(5.3, 2.0);printf("Remainder: %.2f\n", result); // 输出: 1.30return 0; }
3. pow(double x, double y)
— 幂运算
- 功能:计算
x
的y
次幂,即x^y
。 - 返回值:返回
x^y
的结果,类型为double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = pow(2.0, 3.0);printf("Power: %.2f\n", result); // 输出: 8.00return 0; }
4. sqrt(double x)
— 平方根
- 功能:计算一个数的平方根。
- 返回值:返回
x
的平方根,类型为double
。如果x
为负数,会返回NaN
(Not a Number)。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = sqrt(16.0);printf("Square root: %.2f\n", result); // 输出: 4.00return 0; }
5. cbrt(double x)
— 立方根
- 功能:计算一个数的立方根。
- 返回值:返回
x
的立方根,类型为double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = cbrt(27.0);printf("Cube root: %.2f\n", result); // 输出: 3.00return 0; }
6. hypot(double x, double y)
— 计算斜边
- 功能:计算直角三角形的斜边长度,即
sqrt(x^2 + y^2)
。 - 返回值:返回计算结果,类型为
double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = hypot(3.0, 4.0);printf("Hypotenuse: %.2f\n", result); // 输出: 5.00return 0; }
二. 对数和指数函数
这类函数用于对数运算和指数运算。
1. exp(double x)
— 指数
- 功能:计算自然常数
e
(约 2.718)为底的x
次幂,即e^x
。 - 返回值:返回
e^x
的值,类型为double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = exp(1.0);printf("Exp: %.2f\n", result); // 输出: 2.72return 0; }
2. log(double x)
— 自然对数
- 功能:计算
x
的自然对数,即log_e(x)
。 - 返回值:返回
x
的自然对数,类型为double
。如果x
小于等于 0,返回NaN
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = log(2.71828); // 近似于 eprintf("Natural log: %.2f\n", result); // 输出: 1.00return 0; }
3. log10(double x)
— 常用对数
- 功能:计算
x
的常用对数,即以 10 为底的对数。 - 返回值:返回
x
的常用对数,类型为double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = log10(100.0);printf("Log base 10: %.2f\n", result); // 输出: 2.00return 0; }
4. log2(double x)
— 二进制对数
- 功能:计算
x
的以 2 为底的对数。 - 返回值:返回
x
的二进制对数,类型为double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = log2(8.0);printf("Log base 2: %.2f\n", result); // 输出: 3.00return 0; }
三. 三角函数
三角函数是数学中常见的操作,特别是在几何、物理和工程学中。
1. sin(double x)
— 正弦
- 功能:计算
x
的正弦值,x
是弧度。 - 返回值:返回
x
的正弦值,类型为double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = sin(M_PI / 2);printf("Sin: %.2f\n", result); // 输出: 1.00return 0; }
2. cos(double x)
— 余弦
- 功能:计算
x
的余弦值,x
是弧度。 - 返回值:返回
x
的余弦值,类型为double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = cos(0);printf("Cos: %.2f\n", result); // 输出: 1.00return 0; }
3. tan(double x)
— 正切
- 功能:计算
x
的正切值,x
是弧度。 - 返回值:返回
x
的正切值,类型为double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = tan(M_PI / 4);printf("Tan: %.2f\n", result); // 输出: 1.00return 0; }
四. 舍入函数
这些函数帮助我们对浮点数进行取整、舍入等操作。
1. ceil(double x)
— 向上取整
- 功能:返回大于或等于
x
的最小整数值。 - 返回值:返回一个浮点数,类型为
double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = ceil(3.2);printf("Ceil: %.2f\n", result); // 输出: 4.00return 0; }
2. floor(double x)
— 向下取整
- 功能:返回小于或等于
x
的最大整数值。 - 返回值:返回一个浮点数,类型为
double
。 - 示例:
#include <math.h> #include <stdio.h>int main() {double result = floor(3.8);printf("Floor: %.2f\n", result); // 输出: 3.00return 0; }
总结
1. 基本数学运算
函数名 | 描述 | 示例 |
---|---|---|
double fabs(double x) | 计算浮点数的绝对值。 | fabs(-3.5) 返回 3.5 |
double fmod(double x, double y) | 计算 x 除以 y 的余数。 | fmod(5.3, 2) 返回 1.3 |
double pow(double x, double y) | 计算 x 的 y 次幂。 | pow(2, 3) 返回 8.0 |
double sqrt(double x) | 计算平方根。 | sqrt(16) 返回 4.0 |
double cbrt(double x) | 计算立方根。 | cbrt(27) 返回 3.0 |
double hypot(double x, double y) | 计算直角三角形的斜边长度,即 sqrt(x² + y²) 。 | hypot(3, 4) 返回 5.0 |
2. 对数和指数运算
函数名 | 描述 | 示例 |
---|---|---|
double exp(double x) | 计算 e 的 x 次幂,即 e^x 。 | exp(1) 返回 2.71828 |
double log(double x) | 计算自然对数(以 e 为底)。 | log(2.71828) 返回约 1.0 |
double log10(double x) | 计算以 10 为底的对数。 | log10(100) 返回 2.0 |
double log2(double x) | 计算以 2 为底的对数。 | log2(8) 返回 3.0 |
3. 三角函数
函数名 | 描述 | 示例 |
---|---|---|
double sin(double x) | 计算正弦值,参数为弧度制。 | sin(M_PI / 2) 返回 1.0 |
double cos(double x) | 计算余弦值,参数为弧度制。 | cos(0) 返回 1.0 |
double tan(double x) | 计算正切值,参数为弧度制。 | tan(M_PI / 4) 返回 1.0 |
double asin(double x) | 计算反正弦,返回值为弧度。 | asin(1) 返回 M_PI / 2 |
double acos(double x) | 计算反余弦,返回值为弧度。 | acos(0) 返回 M_PI / 2 |
double atan(double x) | 计算反正切,返回值为弧度。 | atan(1) 返回 M_PI / 4 |
double atan2(double y, double x) | 计算 y/x 的反正切,结果范围为 [-π, π] 。 | atan2(1, 1) 返回 M_PI / 4 |
4. 取整与舍入
函数名 | 描述 | 示例 |
---|---|---|
double ceil(double x) | 向上取整,返回大于或等于 x 的最小整数值(以浮点数形式)。 | ceil(2.3) 返回 3.0 |
double floor(double x) | 向下取整,返回小于或等于 x 的最大整数值(以浮点数形式)。 | floor(2.7) 返回 2.0 |
double round(double x) | 四舍五入,返回最接近的整数值(以浮点数形式)。 | round(2.5) 返回 3.0 |
double trunc(double x) | 截断小数部分,返回整数部分(以浮点数形式)。 | trunc(2.7) 返回 2.0 |
5. 特殊数学函数
函数名 | 描述 | 示例 |
---|---|---|
double abs(int x) | 计算整数的绝对值(头文件 <stdlib.h> 提供)。 | abs(-5) 返回 5 |
double nan(const char *tagp) | 生成一个表示 NaN(非数字)的值。 | nan("") |
double INFINITY | 表示无穷大。 | 可用于检查结果是否为无穷大 |
int isfinite(double x) | 判断 x 是否为有限值(既不是 NaN 也不是无限大)。 | isfinite(1.0) 返回 1 |
6. 常量
常量名 | 描述 | 示例 |
---|---|---|
M_PI | 圆周率 π,约等于 3.141592653589793 。 | sin(M_PI / 2) 返回 1.0 |
M_E | 自然常数 e,约等于 2.718281828459045 。 | exp(1) 返回 M_E |
使用注意事项
- 头文件:在使用这些函数前,必须包含头文件
#include <math.h>
。 - 链接库:编译时需要链接数学库,例如在 GCC 中需要加上
-lm
,如:gcc program.c -lm
。 - 返回值类型:大部分函数接受和返回
double
类型,注意类型匹配。