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类型,注意类型匹配。