C语言数学函数库<math.h>的常用函数讲解

350°C 22-12-2024 notbyai
最近更新于:2025-03-06 17:19:21

在 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.40
      return 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.30
      return 0;
  }

3. pow(double x, double y) — 幂运算

  • 功能:计算 xy 次幂,即 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.00
      return 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.00
      return 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.00
      return 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.00
      return 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.72
      return 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);  // 近似于 e
      printf("Natural log: %.2f\n", result);  // 输出: 1.00
      return 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.00
      return 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.00
      return 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.00
      return 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.00
      return 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.00
      return 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.00
      return 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.00
      return 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)计算 xy 次幂。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^xexp(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.141592653589793sin(M_PI / 2) 返回 1.0
M_E自然常数 e,约等于 2.718281828459045exp(1) 返回 M_E

使用注意事项

  1. 头文件:在使用这些函数前,必须包含头文件 #include <math.h>
  2. 链接库:编译时需要链接数学库,例如在 GCC 中需要加上 -lm,如:gcc program.c -lm
  3. 返回值类型:大部分函数接受和返回 double 类型,注意类型匹配。

评论留言

欢迎您,!您可以在这里畅言您的的观点与见解!

0 条评论