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

news2024/11/24 12:15:54

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2246650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GESP2023年9月认证C++四级( 第三部分编程题(1-2))

编程题1&#xff08;string&#xff09;参考程序&#xff1a; #include <iostream> using namespace std; long long hex10(string num,int b) {//int i;long long res0;for(i0;i<num.size();i) if(num[i]>0&&num[i]<9)resres*bnum[i]-0;else //如果nu…

Ultiverse 和web3新玩法?AI和GameFi的结合是怎样

Gamef 和 AI 是我们这个周期十分看好两大赛道之一&#xff0c;(Gamef 拥有极强的破圈效应&#xff0c;引领 Web2 用户进军 Web3 最佳利器。AI是这个周期最热门赛道&#xff0c;无论 Web2的 OpenAl&#xff0c;还是 Web3&#xff0c;都成为话题热议焦点。那么结合 GamefiA1双叙事…

如何在 UniApp 中实现 iOS 版本更新检测

随着移动应用的不断发展&#xff0c;保持应用程序的更新是必不可少的&#xff0c;这样用户才能获得更好的体验。本文将帮助你在 UniApp 中实现 iOS 版的版本更新检测和提示&#xff0c;适合刚入行的小白。我们将分步骤进行说明&#xff0c;每一步所需的代码及其解释都会一一列出…

解决 npm xxx was blocked, reason: xx bad guy, steal env and delete files

问题复现 今天一位朋友说&#xff0c;vue2的老项目安装不老依赖&#xff0c;报错内容如下&#xff1a; npm install 451 Unavailable For Legal Reasons - GET https://registry.npmmirror.com/vab-count - [UNAVAILABLE_FOR_LEGAL_REASONS] vab-count was blocked, reas…

【AI系统】GPU 架构回顾(从2018年-2024年)

Turing 架构 2018 年 Turing 图灵架构发布&#xff0c;采用 TSMC 12 nm 工艺&#xff0c;总共 18.6 亿个晶体管。在 PC 游戏、专业图形应用程序和深度学习推理方面&#xff0c;效率和性能都取得了重大进步。相比上一代 Volta 架构主要更新了 Tensor Core&#xff08;专门为执行…

每天五分钟机器学习:支持向量机数学基础之超平面分离定理

本文重点 超平面分离定理(Separating Hyperplane Theorem)是数学和机器学习领域中的一个重要概念,特别是在凸集理论和最优化理论中有着广泛的应用。该定理表明,在特定的条件下,两个不相交的凸集总可以用一个超平面进行分离。 定义与表述 超平面分离定理(Separating Hy…

docker镜像源配置、换源、dockerhub国内镜像最新可用加速源(仓库)

一、临时拉取方式 在docker pull后先拼接镜像源域名&#xff0c;后面拼接拉取的镜像名 $ docker pull dockerpull.org/continuumio/miniconda3 二、永久配置方式 vim修改/etc/docker/daemon.json&#xff0c;并重启docker服务。 # 创建目录 sudo mkdir -p /etc/docker# 写…

电脑使用——知乎、钉钉组件访问失败解决

最近发现办公电脑知乎、钉钉内置组件访问不了&#xff0c;但同网络下笔记本可以访问&#xff1b;经过检测排除了目标服务异常、防火墙拦截的原因&#xff1b;最后发现是DNS的原因&#xff0c;调整DNS首先项1.1.1.1为114.114.114.114后解决&#xff0c;现插眼记录 首先排除拦截&…

Consumer Group

不&#xff0c;kafka-consumer-groups.sh 脚本本身并不用于创建 Consumer Group。它主要用于管理和查看 Consumer Group 的状态和详情&#xff0c;比如列出所有的 Consumer Group、查看特定 Consumer Group 的详情、删除 Consumer Group 等。 Consumer Group 是由 Kafka 消费者…

pandas与open读取csv/txt文件速度比较

pandas与open读取csv/txt文件速度比较 由于在工作中经常需要读取txt或csv文件&#xff0c;使用pandas与open均可以读取并操作文件内容&#xff0c;但不知道那个速度更快一些&#xff0c;所以写了一个脚本去比较在文件大小不同的情况下读取数据的速度 测试结果: 大小pandas速度…

观察者模式和订阅模式

观察者模式和订阅模式在概念上是相似的&#xff0c;它们都涉及到一个对象&#xff08;通常称为“主题”或“发布者”&#xff09;和多个依赖对象&#xff08;称为“观察者”或“订阅者”&#xff09;之间的关系。然而&#xff0c;尽管它们有相似之处&#xff0c;但在某些方面也…

自主研发,基于PHP+ vue2+element+ laravel8+ mysql5.7+ vscode开发的不良事件管理系统源码,不良事件管理系统源码

不良事件上报系统源码&#xff0c;不良事件管理系统源码&#xff0c;PHP源码 不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”&#xff0c;结合预存上百套已正在使用的模板&#xff0…

取电快充协议芯片,支持全协议、内部集成LDO支持从UART串口读取电压电流消息

H004D 是一款支持全协议的受电端诱骗取电协议芯片&#xff0c;支持宽电压输入 3.3V~30V&#xff0c;芯片内部集成LDO&#xff0c;可输出 3.3V电压, 支持 通过UART 串口读取电压电流&#xff0c;支持定制功能&#xff0c;芯片采用QFN_20封装&#xff0c;线路简单&#xff0c;芯片…

科研数据处理工具Graphpad Prism 10.1+9.5下载安装教程

GraphPad Prism 是一个功能强大且易于使用的统计分析和绘图软件&#xff0c;专为生物医学研究设计而开发。 该软件提供了丰富的统计工具和绘图功能&#xff0c;使用者能够轻松进行数据分析和统计检验。它支持一系列的统计方法&#xff0c;包括T检验、方差分析、非参数检验、生…

Flutter:AnimatedIcon图标动画,自定义Icon通过延时Interval,实现交错式动画

配置vsync&#xff0c;需要实现一下with SingleTickerProviderStateMixinclass _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin{// late延迟初始化 AnimationControllerlate AnimationController _controller;overridevoid initStat…

【网络系统管理】2023年全国职业院校技能大赛:组策略--10套题组合--1

1、限制访问C盘; (1)搜索《我的电脑》 (2)用户配置\策略\管理模板\Windows组件\文件资源管理器 2、禁止运行run.exe; (1)搜索《应用程序》 (2)用户配置\策略\管理模板\系统

【LeetCode每日一题】——485.最大连续 1 的个数

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 数组 二【题目难度】 LeetCode 三【题目编号】 485.最大连续 1 的个数 四【题目描述】 给定…

SpringCloud Gateway转发请求到同一个服务的不同端口

SpringCloud Gateway默认不支持将请求路由到一个服务的多个端口 本文将结合Gateway的处理流程&#xff0c;提供一些解决思路 需求背景 公司有一个IM项目&#xff0c;对外暴露了两个端口8081和8082&#xff0c;8081是springboot启动使用的端口&#xff0c;对外提供一些http接口…

助力3C数码企业实现泛微OA与金蝶EAS的高效对接

助力3C数码企业实现泛微OA与金蝶EAS的高效对接 在3C数码行业&#xff0c;数据的实时性和准确性对于企业的运营至关重要。轻易云数据集成平台&#xff0c;作为业界领先的无代码软件集成解决方案&#xff0c;致力于帮助3C数码企业实现系统间的无缝对接&#xff0c;提升数据管理效…

<OS 有关> ubuntu 24 不同版本介绍 安装 Vmware tools

原因 想用 apt-get download 存到本地 / NAS上&#xff0c;减少网络流浪。 看到 VMware 上的确实有 ubuntu&#xff0c;只是版本是16。 ubuntu 版本比较&#xff1a;LTS vs RR LTS: Long-Term Support 长周期支持&#xff0c; 一般每 2 年更新&#xff0c;会更可靠与更稳定…