C 标准库 – 头文件
1️⃣ <fenv.h> 简介
<fenv.h> 提供了用于控制和检查浮点运算行为的宏和函数。它为浮点环境提供了精细的控制,允许设置舍入模式、捕获浮点异常等。通过 <fenv.h>,程序员可以:
- 控制浮点舍入模式,指定不同的舍入方法。
- 捕捉浮点异常,例如除以零、溢出、无效操作等。
- 查询和设置浮点环境,例如浮点标志和状态。
在浮点计算需要高精度或特殊控制时,<fenv.h> 可以帮助程序员精确控制浮点运算的行为。
2️⃣ 浮点环境控制
<fenv.h> 允许访问和修改浮点环境。浮点环境包括一些标志和设置,控制浮点数计算过程中的舍入方式以及异常处理。浮点环境的常见标志包括:
- 浮点异常标志:例如除零错误、无效操作错误等。
- 舍入模式:定义了浮点数运算中的舍入规则。
📌 浮点异常
浮点异常通常指在计算过程中遇到的问题,例如除数为零、溢出、下溢等。<fenv.h> 提供了查询和处理这些异常的功能。
📌 浮点状态
浮点状态包括当前浮点计算的结果和环境设置。<fenv.h> 允许程序员查询和设置这些状态。
3️⃣ 浮点异常和状态
<fenv.h> 提供了以下浮点异常标志和操作:
📌 浮点异常标志
- FE_DIVBYZERO:除零错误。
- FE_INVALID:无效操作错误(例如对负数取平方根)。
- FE_OVERFLOW:溢出错误。
- FE_UNDERFLOW:下溢错误。
- FE_INEXACT:近似误差(结果不能精确表示)。
📌 浮点异常控制
feclearexcept():清除指定的浮点异常标志。fegetexceptflag():获取指定的浮点异常标志。fesetexceptflag():设置浮点异常标志。
例如,可以通过 feclearexcept() 清除当前的异常标志,或使用 fegetexceptflag() 获取当前的浮点异常状态。
📌 检查异常
fetestexcept():测试浮点异常标志。
4️⃣ 舍入模式
浮点数舍入模式控制了浮点运算中的结果如何舍入。C 标准库中提供了四种常见的舍入模式,可以通过 <fenv.h> 设置:
- FE_TONEAREST:四舍五入到最接近的值(默认模式)。
- FE_UPWARD:向正无穷方向舍入。
- FE_DOWNWARD:向负无穷方向舍入。
- FE_TOWARDZERO:向零舍入。
📌 设置舍入模式
fesetround():设置舍入模式。
📌 获取当前舍入模式
fegetround():获取当前的舍入模式。
5️⃣ 使用实例
📌 示例:捕获浮点异常
以下代码展示了如何使用 <fenv.h> 捕获除零异常:
#include <stdio.h>
#include <fenv.h>int main() {// 启用除零异常feenableexcept(FE_DIVBYZERO);// 进行除法计算,触发除零异常double result = 1.0 / 0.0; // 除以零if (fetestexcept(FE_DIVBYZERO)) {printf("除零异常被捕获!\n");}return 0;
}
输出:
除零异常被捕获!
📌 示例:控制舍入模式
#include <stdio.h>
#include <fenv.h>int main() {// 设置舍入模式为向零舍入fesetround(FE_TOWARDZERO);// 进行浮点数运算double x = 1.5;double y = 2.5;double sum = x + y;// 输出结果printf("舍入模式:向零舍入,结果:%.2f\n", sum);return 0;
}
输出:
舍入模式:向零舍入,结果:4.00
6️⃣ 参考资料
📖 C 标准库 – <fenv.h> 官方文档
📖 GNU C Library – fenv.h
📖 ISO C 标准(PDF)
资料来源:📌 C 标准库 – 头文件 – 52kanjuqing-开发者社区,学的不仅是技术,更是梦想
相关文章:
C 标准库 – 头文件
1️⃣ <fenv.h> 简介 <fenv.h> 提供了用于控制和检查浮点运算行为的宏和函数。它为浮点环境提供了精细的控制,允许设置舍入模式、捕获浮点异常等。通过 <fenv.h>,程序员可以: 控制浮点舍入模式,指定不同的舍入…...
Redis的基础,经典,高级问题解答篇
目录 一,基础 二,经典 缓存雪崩: 1. Redis事务的原子性 2. 与MySQL事务的区别 1. 主从复制原理 2. 哨兵模式故障转移流程 3. 客户端感知故障转移 三,高级 一,基础 Redis的5种基础数据类型及使用场景…...
uniapp uni-swipe-action滑动内容排版改造
在uniapp开发中 默认的uni-swipe-action滑动组件 按钮里的文字都是横排的 不能换行的 如果是在一些小屏设备 比如PDA这种,同时按钮文字又都是4个字 多按钮的情况 就会发现滑动一下都直接满屏了 观看体验都不好 但默认的官方组件又没有样式的设置,下面就告…...
电脑卡怎么办?提升电脑流畅的方法
电脑已经成为我们工作、学习和娱乐不可或缺的伙伴。然而,随着使用时间的增长,许多用户会遇到电脑运行变慢、卡顿的情况,这不仅影响了工作效率,也大大降低了使用体验。本文将为大家分析电脑卡顿的常见原因,并提供一套实…...
SpringBoot报错解决方案
org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException: the request was rejected because its size (31297934) exceeds the configured maximum (10485760) 文件上传大小超过限制...
知识表示方法之二:产生式表示法(Production System)
有关知识表示方法之一:一阶谓词逻辑的内容可以看我的文章:https://blog.csdn.net/lzm12278828/article/details/146541478 一、定义 “产生式”这一术语是有美国数学家博斯特(E.Post)在1943年首先提出来的,他根据串替代规则提出了一种称为波斯特机的计算模型,模型中的每…...
SQL Server中账号权限
目录标题 查看现有权限授予权限拒绝权限撤销权限角色管理 在SQL Server中管理账号权限主要通过以下几个关键步骤: 查看现有权限 可以使用系统视图来查看账号的权限,比如 sys.database_permissions 视图,示例查询如下: SELECT d…...
软件需求未明确非功能性指标(如并发量)的后果
软件需求未明确非功能性指标(如并发量)可能带来的严重后果包括:系统性能下降、用户体验恶化、稳定性降低、安全风险增加、后期维护成本高企。其中,系统性能下降尤为显著。当软件系统在设计和开发阶段未明确并发量需求时࿰…...
VScode-i18n-ally-Vue
参考这篇文章,做Vue项目的国际化配置,本篇文章主要解释,下载了i18n之后,该如何对Vscode进行配置 https://juejin.cn/post/7271964525998309428 i18n Ally全局配置项 Vscode中安装i18n Ally插件,并设置其配置项&#…...
Spring Boot项目快速创建-开发流程(笔记)
主要流程: 前端发送网络请求->controller->调用service->操纵mapper->操作数据库->对entity数据对象赋值->返回前端 前期准备: maven、mysql下载好 跟学视频,感谢老师: https://www.bilibili.com/video/BV1gm4…...
车架号查询车牌号接口如何用Java对接
一、什么是车架号查询车牌号接口? 车架号查询车牌号接口,即传入车架号,返回车牌号、车型编码、初次登记日期信息。车架号又称车辆VIN码,车辆识别码。 二、如何用Java对接该接口? 下面我们以阿里云接口为例࿰…...
npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本的处理方法
1、安装了node.js后,windows powershell中直接输入npm,然后就报错 2、出现原因:权限不够 系统禁用了脚本的执行,所以我们在windows powershell输入npm -v的时候,就会报上面的错误。 3、解决 Set-ExecutionPolicy Un…...
【java笔记】泛型、包装类、自动装箱拆箱与缓存机制
一、泛型:类型安全的基石 1. 泛型的本质与原理 Java 泛型(Generics)是 JDK 5 引入的特性,通过类型参数化实现代码的通用性。泛型类、接口和方法允许在定义时声明类型参数(如 T、E、K、V),这些…...
数仓开发那些事(11)
某神州优秀员工:一闪,领导说要给我涨米。 一闪:。。。。(着急的团团转) 老运维:Oi,两个吊毛,看看你们的hadoop集群,健康度30分,怎么还在抽思谋克?…...
自动化测试【Python3.7+Selenium3】
1、自动化测试环境搭建之selenium3安装 方法1:cmd环境下,用pip install selenium (速度很慢,不推荐) 方法2:下载selenium安装包手动安装 下载地址:https://pypi.org/project/selenium/ 在解压…...
从零开始完成冒泡排序(0基础)——C语言版
文章目录 前言一、冒泡排序的基本思想二、冒泡排序的执行过程(一)第一轮排序(二)第二轮排序(三)第三轮排序(四)第四轮排序 三、冒泡排序的代码实现(C语言)&am…...
工业级POE交换机:助力智能化与自动化发展
随着工业互联网、物联网(IoT)和自动化技术的快速发展,网络设备在工业领域的应用日益广泛。然而,在严苛环境下,传统网络设备往往难以应对复杂的温湿度变化、电磁干扰和供电不稳定等挑战。为同时满足数据传输与供电一体化…...
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第五讲)
在上一讲我们讲解了按键回调函数的自定义函数的用法,这一讲继续讲解回调函数的另一种用法。 首先我们将上一讲做好的按键名称以及自定义回调事件中的按键名称修改,改为默认模式为“open”当点击按键时进入回调函数将按键名称改为“close”,具…...
Burp Suite Professional 2024版本安装激活指南
文章目录 burpsuite简介Burp Suite的主要组件:Burp Suite的版本使用场景 下载地址使用教程 burpsuite简介 Burp Suite 是一个广泛使用的网络安全测试工具,特别是在Web应用程序安全领域。它主要用于发现和修复Web应用中的安全漏洞,特别适用于渗…...
【c++深入系列】:类与对象详解(上)
🔥 本文专栏:c 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 你仰望的星辰并非遥不可及,而是跋涉者脚印的倒影;你向往的远方未必需要翅膀,只要脚下始终有路&#x…...
6、进程理论和简单进程创建
一、了解进程推荐看这个视频,很详细 1、概念 进程(Process)程序的运行过程,是系统进行资源分配和调度的独立单元程序的运行过程:多个不同程序 并发,同一个程序同时执行多个任务。 就需要很多资源来实现这个过程。 每个进程都有一…...
java八股文之JVM
1.什么是程序计数器 程序计数器是 JVM 管理线程执行的“定位器”,记录每个线程当前执行的指令位置,确保程序流程的连续性和线程切换的准确性。线程私有的,每个线程一份,内部保存的字节码的行号。用于记录正在执行的字节码指令的地…...
Todesk介绍
文章目录 ToDesk 软件介绍1. 软件概述2. ToDesk 的功能特点2.1 简单易用2.2 高质量的图像与流畅的操作2.3 跨平台支持2.4 多屏显示与协作2.5 文件传输功能2.6 实时聊天与语音通话2.7 远程唤醒与自动启动2.8 多种权限设置与安全性2.9 无需公网 IP 3. ToDesk 的应用场景3.1 个人使…...
每日总结3.27
蓝桥刷题 1. 团建 (树dfs) #include <bits/stdc.h> using namespace std; const int N200005; int a[N],b[N]; int ans; map<int,vector<int>>m1,m2; void dfs(int x,int y,int count) { if(a[x]!b[y]) {return;} ansmax(ans,c…...
Linux 进程3-fork创建子进程继承父进程缓冲区验证
目录 1. fork创建子进程继承父进程缓冲区验证 1.1 write向标准输出(终端屏幕)写入数据验证 1.1.1 write函数写入数据不带行缓冲刷新 \n 1.1.2 write函数写入数据带行缓冲刷新 \n 1.2 fork创建前执行printf函数 1.2.1 fork创建前执行printf函数带\n…...
应用服务接口第二次请求一直pending问题
目录 一、问题背景二、问题排查过程三、解决方案四、总结 一、问题背景 升级内容发布到灰度环境,验证相关服务,查看接口调用日志,发现第一次请求正常,第二次相同接口请求就一直pending,其他服务也是如此 二、问题排查…...
基于FPGA的ESP8266无线数据传输(温湿度DTH11、光照强度BH1750、WIFI模块)连接中国移动onenet云平台,仿真+上板
文章目录 一、创建云平台产品设备二、FPGA仿真WIFI模块通信过程仿真分析2.上板 总结 一、创建云平台产品设备 使用串口助手测试传输过程 相关信息记录 二、FPGA仿真WIFI模块通信过程 仿真分析 //各个状态tx_dataalways (posedge clk or negedge rst_n) beginif(!rst_n) beg…...
5款视觉OCR开源模型
一、号称「世界上最好的 OCR 模型」Mistral OCR Mistral OCR 擅长理解复杂的文档元素,包括交错图像、数学表达式、表格和高级布局(如 LaTeX 格式)。该模型可以更深入地理解丰富的文档,尤其是包含图表、图形、公式和数字的科学论文…...
计算机二级(C语言)考试高频考点总汇(三)—— 结构体和共用体、结构体对齐规则、联合体大小计算
目录 九、结构体和共用体 十、结构体对齐规则 十一、联合体大小计算 九、结构体和共用体 141. 结构体是(不同类型成员的集合),是⼀种用户自定义的数据类型,可以将不同类型的成员组合在⼀起,用于表示(复…...
transformers中学习率warmup策略具体如何设置
在使用 get_linear_schedule_with_warmup(如 Hugging Face Transformers 库中的学习率调度器)时,参数的合理设置需要结合 数据量(dataset size)、批次大小(batch size) 和 训练轮数(…...
