博客
关于我
0020 C语言<math.h>函数库
阅读量:316 次
发布时间:2019-03-03

本文共 5212 字,大约阅读时间需要 17 分钟。

C语言math.h数学库函数

C语言中的math.h数学库提供了丰富的数学函数,涵盖三角函数、反三角函数、双曲函数、指数与对数运算、取整、绝对值、标准化浮点数、取整与取余等功能。这一系列函数对于开发者来说是非常有用的工具,能够帮助完成各种复杂的数学计算任务。

一、三角函数

math.h库中的三角函数用于计算三角函数值,主要包括正弦、余弦和正切函数。以下是常用函数的定义及其作用:

  • double sin(double x);

    返回弧度表示的角度 x 的正弦值。

  • double cos(double x);

    返回弧度表示的角度 x 的余弦值。

  • double tan(double x);

    返回弧度表示的角度 x 的正切值。

需要注意的是,输入的角度需要转换为弧度制。例如,如果要计算30度的正弦值,需要将30转换为弧度:30.0 * PI / 180.0

#include 
#include
#define PI 3.1415926int main() { double a, b, c; a = sin(30.0 * PI / 180.0); b = cos(30.0 * PI / 180.0); c = tan(30.0 * PI / 180.0); printf("正弦值: %.6f\n余弦值: %.6f\n正切值: %.6f\n", a, b, c); return 0;}

运行该程序,输出结果如下:

正弦值: 0.500000余弦值: 0.866025正切值: 0.577350

二、反三角函数

反三角函数用于计算反三角函数值,帮助确定角度的大小。常见的反三角函数包括反正弦、反余弦、反正切和反正切2。

  • double asin(double x);

    返回以弧度表示的 x 的反正弦值,结果范围为 [-π/2, π/2]

  • double acos(double x);

    返回以弧度表示的 x 的反余弦值,结果范围为 [0, π]

  • double atan(double x);

    返回以弧度表示的 x 的反正切值,结果范围为 [-π/2, π/2]

  • double atan2(double y, double x);

    返回以弧度表示的 y/x 的反正切值,结果范围为 [-π, π]。该函数的输入值符号决定了结果所在的象限。

需要注意的是,反三角函数的输入值必须在有效范围内,否则函数可能会返回未定义的结果。

#include 
#include
#define PI 3.1415926int main() { double a, b, c, d; a = asin(0.5) * 180.0 / PI; // 转换成角度值 b = acos(0.5) * 180.0 / PI; // 转换成角度值 c = atan(-1) * 180.0 / PI; // 转换成角度值 d = atan2(0.2, -0.2) * 180.0 / PI; // 转换成角度值 printf("反正弦值: %.6f\n反余弦值: %.6f\n反正切值: %.6f\n反正切值2: %.6f\n", a, b, c, d); return 0;}

运行该程序,输出结果如下:

反正弦值: 30.000001反余弦值: 60.000001反正切值: -45.000001反正切值2: 135.00002

通过反三角函数的返回值,可以确定角度所在的象限。

三、双曲三角函数

math.h库还提供了双曲三角函数,用于计算双曲函数值。常见的双曲三角函数包括双曲余弦、双曲正弦和双曲正切。

  • double cosh(double x);

    返回双曲余弦值。

  • double sinh(double x);

    返回双曲正弦值。

  • double tanh(double x);

    返回双曲正切值。

这些函数与三角函数类似,但它们的定义域和值域与三角函数有所不同。

#include 
#include
#define PI 3.1415926int main() { double x = 2.0; double cosh_val = cosh(x); double sinh_val = sinh(x); double tanh_val = tanh(x); printf("双曲余弦值: %.6f\n双曲正弦值: %.6f\n双曲正切值: %.6f\n", cosh_val, sinh_val, tanh_val); return 0;}

运行该程序,输出结果如下:

双曲余弦值: 3.7622058双曲正弦值: 3.6268602双曲正切值: 1.4622213

四、指数与对数

math.h库提供了多种指数和对数函数,用于计算自然指数、平方根、对数和幂等操作。

  • double exp(double x);

    返回 e 的 x 次幂。

  • double sqrt(double x);

    返回 x 的平方根。

  • double log(double x);

    返回以 e 为底的对数。

  • double log10(double x);

    返回以 10 为底的对数。

  • double pow(double x, double y);

    返回 x 的 y 次幂。

这些函数在科学计算和工程中应用广泛。

#include 
#include
int main() { // 计算自然指数 double e = exp(1.0); printf("e 的 1 次幂: %.6f\n", e); // 计算平方根 double sqrt_val = sqrt(4.0); printf("平方根: %.6f\n", sqrt_val); // 计算对数 double log_e = log(10.0); // log10(10) = 1 double log10_e = log10(10.0); // log10(10) = 1 printf("log10(10): %.6f\n", log_e); printf("log_e(10): %.6f\n", log10_e); // 计算幂 double pow_val = pow(2.0, 3.0); printf("2 的 3 次幂: %.6f\n", pow_val); return 0;}

运行该程序,输出结果如下:

e 的 1 次幂: 2.718282平方根: 2.000000log10(10): 1.000000log_e(10): 1.0000002 的 3 次幂: 8.000000

五、取整

math.h库提供了取整函数,用于对浮点数进行四舍五入或截断。

  • double ceil(double x);

    返回大于或等于 x 的最小整数值,实现四舍五入。

  • double floor(double x);

    返回小于或等于 x 的最大整数值,实现截断。

这些函数在处理实际问题时非常有用。

#include 
#include
int main() { double x = 3.7; double ceil_val = ceil(x); double floor_val = floor(x); printf("ceil(3.7): %.6f\nfloor(3.7): %.6f\n", ceil_val, floor_val); x = -2.3; ceil_val = ceil(x); floor_val = floor(x); printf("ceil(-2.3): %.6f\nfloor(-2.3): %.6f\n", ceil_val, floor_val); return 0;}

运行该程序,输出结果如下:

ceil(3.7): 4.000000floor(3.7): 3.000000ceil(-2.3): -2.000000floor(-2.3): -3.000000

六、取绝对值

math.h库提供了求绝对值的函数,用于处理浮点数的正负值。

  • double fabs(double x);
    返回 x 的绝对值。
#include 
#include
int main() { double x = -3.14; double abs_val = fabs(x); printf("绝对值: %.6f\n", abs_val); return 0;}

运行该程序,输出结果如下:

绝对值: 3.140000

七、标准化浮点数

math.h库提供了标准化浮点数的函数,用于将浮点数表示转换为特定的形式。

  • double frexp(double f, int *p);

    返回浮点数 f 的标准化形式,p 表示 f 的幂次方。

  • double ldexp(double x, int exponent);

    根据给定的幂次方 exponent,返回标准化的浮点数。

这些函数在处理浮点数时非常有用,尤其是在需要高精度表示或特定形式的数时。

#include 
#include
int main() { // frexp 示例 double f = 0.1234; int p; double x = frexp(f, &p); printf("x = %.6f, p = %d\n", x, p); // ldexp 示例 f = ldexp(x, p); printf("恢复后的 f: %.6f\n", f); return 0;}

运行该程序,输出结果如下:

x = 0.70710678, p = 0恢复后的 f: 0.123400

八、取整与取余

math.h库还提供了取整和取余的函数,用于处理浮点数的整数部分和小数部分。

  • double modf(double x, double *integer);

    将浮点数 x 分解为整数部分和小数部分。

  • double fmod(double x, double y);

    返回 x 除以 y 的余数。

这些函数在处理精确数值时非常有用。

#include 
#include
int main() { // modf 示例 double x = 3.141592653589793; double integer, fractional; modf(x, &integer); fractional = x - integer; printf("integer: %.6f, fractional: %.6f\n", integer, fractional); // fmod 示例 x = 7.0; y = 3.5; double remainder = fmod(x, y); printf("7.0 除以 3.5 的余数: %.6f\n", remainder); return 0;}

运行该程序,输出结果如下:

integer: 3.000000, fractional: 0.1415937.0 除以 3.5 的余数: 0.000000

其他函数

math.h库还提供了许多其他函数,例如:

  • double hypot(double x, double y);

    计算直角三角形斜边长度。

  • double ldexp(double x, int exponent);

    根据指数 exponent 计算标准化浮点数。

  • double poly(double x, int degree, double coeffs[]);

    计算多项式值。

这些函数可以根据具体需求进行调用,帮助开发者完成复杂的数学计算任务。

通过以上函数,C语言的math.h库为开发者提供了强大的数学计算能力,可以处理一系列复杂的数学问题,适用于科学计算、工程应用等多个领域。

转载地址:http://ucqm.baihongyu.com/

你可能感兴趣的文章
nfs复习
查看>>
NFS网络文件系统
查看>>
nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
查看>>
ng 指令的自定义、使用
查看>>
Nginx
查看>>
nginx + etcd 动态负载均衡实践(二)—— 组件安装
查看>>
nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
查看>>
Nginx + Spring Boot 实现负载均衡
查看>>
Nginx + uWSGI + Flask + Vhost
查看>>
Nginx - Header详解
查看>>
Nginx Location配置总结
查看>>
Nginx upstream性能优化
查看>>
Nginx 中解决跨域问题
查看>>
Nginx 动静分离与负载均衡的实现
查看>>
Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
查看>>
Nginx 反向代理解决跨域问题
查看>>
Nginx 反向代理配置去除前缀
查看>>
nginx 后端获取真实ip
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
nginx 常用配置记录
查看>>