在 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^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

使用注意事项

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

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐