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

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) — 幂运算

  • 功能:计算 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.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)计算 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.mzph.cn/news/887255.shtml

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

相关文章

【海思Hi3519DV500】双目网络相机套板硬件规划方案

Hi3519DV500双目网络相机套板是针对该芯片设计的一款 IP 编码板 PCBA&#xff0c;硬件接口支持双目sensor 接入&#xff0c;SDIO3.0 接口、USB2.0、USB3.0、UART 接口以及丰富的 IO 扩展应用&#xff0c;可根据各种使用场景设计相应扩展板&#xff0c;丰富外围接口&#xff0c;…

已阻止加载“http://localhost:8086/xxx.js”的模块,它使用了不允许的 MIME 类型 (“text/plain”)。

记录今天解决的一个小bug 在终端启动8080端口号监听后&#xff0c;打开网址http://localhost:8080&#xff0c;发现不能正确加载页面&#xff0c;打开检查-控制台&#xff0c;出现如下警告&#xff1a;已阻止加载“http://localhost:8086/xxx.js”的模块&#xff0c;它使用了不…

unity3d——基础篇小项目(开始界面)

示例代码&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine;public class BeginPanel : BasePanel<BeginPanel> {public UIButton btnBegin;public UIButton btnRank;public UIButton btnSetting;public UIButton btnQuit; …

【AI日记】24.11.19 GraphRAG

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 核心工作 1 内容&#xff1a;修改简历和投简历时间&#xff1a;1 小时结果&#xff1a;都失败了&#xff0c;不过我不会气馁&#xff0c;我会越挫越勇 核心工作 2 内容&#xff1a;学习微软的开源项目 Grap…

React Native的界面与交互

React Native (RN) 是一个由 Facebook 开发的开源框架&#xff0c;用于构建跨平台的移动应用程序。它允许开发者使用 JavaScript 和 React 来创建原生 iOS 和 Android 应用。RN 的出现极大地简化了移动应用的开发过程&#xff0c;使得开发者可以更快速、更高效地构建高质量的应…

时序预测 | Matlab实现PSO-Elman粒子群优化递归神经网络时间序列预测

时序预测 | Matlab实现PSO-Elman粒子群优化递归神经网络时间序列预测 目录 时序预测 | Matlab实现PSO-Elman粒子群优化递归神经网络时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现PSO-Elman粒子群优化递归神经网络时间序列预测&#xff08;完整源…

Let‘s Encrypt SSL证书:acmessl.cn申请免费3个月证书

目录 一、CA机构 二、Lets Encrypt特点 三、申请SSL 一、CA机构 ‌Lets Encrypt‌是一个由非营利组织Internet Security Research Group (ISRG)运营的证书颁发机构&#xff08;CA&#xff09;&#xff0c;旨在通过自动化和开放的方式为全球网站提供免费、可靠的SSL/TLS证书。…

丹摩征文活动|基于丹摩算力Llama3.1实现私有化部署的Chatbot

一、简介 Llama 3.1 模型介绍 Llama 3.1 是一种大型的、开源的语言生成模型&#xff0c;类似于OpenAI的GPT-3&#xff0c;但它是由Meta&#xff08;前Facebook&#xff09;推出的。Llama 3.1具备强大的自然语言处理能力&#xff0c;可以执行各种语言任务&#xff0c;如对话生…

ssm168基于jsp的实验室考勤管理系统网页的设计与实现+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;实验室考勤管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本实验室考勤管…

(动画)Qt控件 QLCDNumer

文章目录 LCD Number1. 介绍2. 核心属性3 . 代码实现:倒计时1. 在界⾯上创建⼀个 QLCDNumber , 初始值设为 10.2. 修改 widget.h 代码, 创建⼀个 QTimer 成员, 和⼀个 updateTime 函数3. 修改 widget.cpp, 在构造函数中初始化 QTimer4. 修改 widget.cpp, 实现 updateTime 4. 动…

session理解

一、术语session   session&#xff1a;中文经常翻译为 ‘会话’&#xff0c;其本来的含义是指有始有终的一系列动作/消息&#xff0c;比如&#xff1a;打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称为一个session。在阅读技术书籍时我们可能会看到这样的话“在…

Java集合分页

一、前言 在Java开发中&#xff0c;若单次展示的数据量太大&#xff0c;会造成程序响应缓慢&#xff0c;就需要用到分页功能&#xff0c;每一页展示一定量的数据&#xff0c;分多次展示 ... 那么在List集合中&#xff0c;如何实现分页功能呢&#xff1f; 本文将以3种方式&…

【线程】Java多线程编程

【线程】Java多线程编程 一、前言一个最简单的多线程编程示例可以使用的工具 二、创建线程的方式三、Thread类中重要的属性和方法3.1 构造方法3.2 常见属性 一、前言 当有多个线程的时候&#xff0c;这些线程的执行顺序是不确定的。这一点&#xff0c;是我们之前提到的操作系统…

IP转发流程

IP 转发是网络通信中通过中间设备&#xff08;如路由器或启用了转发功能的主机&#xff09;将接收到的 IP 数据包根据路由表的指引发送到目标网络的过程。以下是 IP 转发的详细流程及转发过程中各个环节的说明&#xff1a; IP 转发的流程详解 数据包到达路由器或主机&#xff…

Java技术复习提升 11 常用类

第11章 常用类 1 包装类 不同包装类都继承自Object类 Serialiazble接口表示该类表示序列化 Comparable接口用于定义自然顺序 包装类和基本数据的转换 jdk5之前手动装箱拆箱 jdk5之后自动装箱拆箱 自动装箱底层调用的是valueof方法 拆箱仍然是intvalue方法 public class Inte…

P1 练习卷(C++4道题)

1.纷繁世界 内存限制&#xff1a;256MB 时间限制&#xff1a;1s 问题描述 这是一个纷繁复杂的世界。 某一天清晨你起床很迟&#xff0c;没有吃上早饭。于是你骑着自行车去超市&#xff0c;但是你又发现商店的工作人员已经重新贴上了价格标签&#xff0c;零食价格都涨了50%。你…

STL之哈希

STL之哈希 unordered_set/map&哈希之介绍unordered系列哈希哈希表的模拟实现 unordered_set&/map的模拟实现哈希的应用位图&#xff08;bitmap/bitset&#xff09;布隆过滤器&#xff08;Bloom Filter&#xff09;海量数据处理 unordered_set/map&哈希之介绍 unor…

Selenium的八种定位方式

1. 通过 ID 定位 ID 是最直接和高效的方式来定位元素&#xff0c;因为每个页面中的 ID 应该是唯一的。 from selenium import webdriverdriver webdriver.Chrome(executable_pathpath/to/chromedriver) driver.get(https://example.com)# 通过 ID 定位 element driver.find…

logback动态获取nacos配置

文章目录 前言一、整体思路二、使用bootstrap.yml三、增加环境变量四、pom文件五、logback-spring.xml更改总结 前言 主要是logback动态获取nacos的配置信息,结尾完整代码 项目springcloudnacosplumelog&#xff0c;使用的时候、特别是部署的时候&#xff0c;需要改环境&#…

AwsCredentialsProvider认证接口

一、介绍 1、简介 AwsCredentialsProvider 是 AWS SDK 中用于提供 AWS 身份验证凭证的一个接口。AWS SDK 中涉及身份验证和授权的操作都需要用到凭证,而 AwsCredentialsProvider 作为一种抽象,负责提供这些凭证。AwsCredentialsProvider 在 Java SDK 中尤为重要,它可以用于…