【单片机学习笔记】math库函数补充

C 语言 <math.h> 库提供了丰富的数学函数,以下是最常用的函数分类介绍:

1. 三角函数(弧度制)

函数名 功能 示例
sin(x) 正弦函数 sin(3.14159/2) ≈ 1.0
cos(x) 余弦函数 cos(0) = 1.0
tan(x) 正切函数 tan(3.14159/4) ≈ 1.0
asin(x) 反正弦函数(返回 [-π/2, π/2]) asin(1.0) ≈ 1.5708
acos(x) 反余弦函数(返回 [0, π]) acos(1.0) = 0.0
atan2(y, x) 计算 y/x 的反正切(考虑象限,返回 [-π, π]) atan2(1.0, 1.0) ≈ 0.7854

注:x是弧度制

2. 指数与对数函数

函数名 功能 示例
exp(x) 自然指数 ex exp(1.0) ≈ 2.71828
log(x) 自然对数 ln(x)(x>0) log(2.71828) ≈ 1.0
log10(x) 以 10 为底的对数 log10​(x) log10(100.0) = 2.0
pow(x, y) 幂函数 xy pow(2.0, 3.0) = 8.0

3. 幂函数、绝对值与取整

函数名 功能 示例
sqrt(x) 平方根 x​(x≥0) sqrt(16.0) = 4.0
fabs(x) 浮点数绝对值 fabs(-3.14) = 3.14
ceil(x) 向上取整(返回不小于 x 的最小整数) ceil(2.3) = 3.0
floor(x) 向下取整(返回不大于 x 的最大整数) floor(2.9) = 2.0
round(x) 四舍五入取整 round(2.5) = 3.0

4. 其他常用函数

函数名 功能 示例
fmod(x, y) 浮点余数(符号与 x 相同) fmod(5.2, 2.0) ≈ 1.2
hypot(x, y) 计算直角三角形斜边 x2+y2​ hypot(3.0, 4.0) = 5.0
modf(x, *int_part) 拆分 x 为整数部分(通过指针返回)和小数部分 modf(3.14, &int_part) → 0.14,int_part=3.0

注意事项

  1. 参数与返回值 :所有函数的参数和返回值默认均为 double 类型(也有 float 版本如 sinf()long double 版本如 sinl())。
  2. 编译链接 :使用 <math.h> 时,需在编译时添加 -lm 选项链接数学库(如 gcc main.c -o main -lm)。
  3. 定义域检查 :部分函数(如 sqrtlog)对输入有定义域要求,非法输入可能导致 NaN 或无穷大。

得到一个浮点型变量然后保留小数点后 1 位有效数字

通过 round() 函数(四舍五入)结合乘除运算,可修改变量值为保留 1 位小数的结果。

cpp 复制代码
#include <stdio.h>
#include <math.h>  // 需包含 math.h 并链接 -lm

int main() {
    double num = 3.14159;
    num = round(num * 10) / 10.0;  // 先乘10取整,再除以10
    printf("修改后的值:%.1f\n", num);  // 输出 3.1
    return 0;
}
  • 编译注意 :使用 math.h 时,需在编译时添加 -lm 链接数学库(如 gcc main.c -o main -lm)。
相关推荐
FreakStudio5 小时前
硬件版【Cursor】?aily blockly IDE尝鲜封神,实战硬伤尽显
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
largecode7 小时前
打电话时,怎么让号码显示自己的品牌名称?办理号码认证服务流程
笔记·百度·微信·课程设计·微信公众平台·facebook·新浪微博
米罗篮9 小时前
DSU并查集 & 拓展欧几里得-逆元
c++·经验分享·笔记·算法·青少年编程
噜噜噜阿鲁~9 小时前
python学习笔记 | 10.0、面向对象编程
笔记·python·学习
hssfscv10 小时前
软件设计师下午题训练1-3题+2019上上午题错题解析 练习真题训练13
笔记·设计模式·uml
nashane10 小时前
HarmonyOS 6学习:Web组件同层渲染事件处理与智能长截图实现
前端·学习·harmonyos·harmonyos 5
SmartRadio10 小时前
STM32WLE5 LoRa 射频匹配优化(V1.1 版)
stm32·单片机·嵌入式硬件·阻抗匹配
nashane10 小时前
HarmonyOS 6学习:Web组件同层渲染触摸事件与长截图拼接实战
前端·学习·harmonyos·harmonyos 5
哆哆啦0011 小时前
使用 Obsidian + GitHub Actions + GitHub Pages 搭建内容发布流
数据库·笔记·github·obsidian
超级小星星11 小时前
C 语言结构体内存对齐深度解析:从概念到实战
c语言·开发语言