| 
 | |
| 
 | 
| 开发:
C++知识库 
Java知识库 
JavaScript 
Python 
PHP知识库 
人工智能 
区块链 
大数据 
移动开发 
嵌入式 
开发工具 
数据结构与算法 
开发测试 
游戏开发 
网络协议 
系统运维 教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 | 
| -> C++知识库 -> 怎么判断一个浮点数是0? (C语言) -> 正文阅读 | 
|  | 
| [C++知识库]怎么判断一个浮点数是0? (C语言) | 
| 目录 前言: ? ? ? ? “这还不简单啊,直接用if (float == 0)不就完事了吗?” 在我学习C语言的时候,老师突然问‘怎么判断一个浮点数是0?’我脑海里想的就是上面那个答案。 ? ? ? ? 但,实事可不是这样的。因为计算机在保存浮点数的时候会有误差,不能很好的保存浮点数。所以上面的想法是错误的,那么计算机是怎么存储浮点数的呢?? 一、计算机是怎么存储浮点数?? ? ? ??计算机底层存储整数时,是以补码形式保存数据的。补码可参考:位运算符(C语言)_憨了吧唧的人于八的博客-CSDN博客 ????????浮点数是采用科学计数法的方式来表示的,如3.1415926 ? ? ? ?对于二进制,要使用科学计数法,只需将基数10换位2 ????????它的格式如下: ? ? ? ? 每个变量含有如下: 
 现在,如果要在计算机上保存浮点数,则只需要保存以上三个变量即可。 ? ? ? ? float:????????????????一般为4字节,也就是32bite。 ????????????????R32-24(规则):1(符号位S)+28(指数E)+23(底数M)? ? S-(E+127)-M ? ? ? ? double:? ? ? ? ? ? ? ? 一般为8字节,也就是64bite。 ????????????????R64-53(规则):1(符号位S)+11(指数E)+52(底数M)? N-(R+1023)-M ? ? ? ? 特殊值:????????????????无穷?: 指数全为1,底数全为0 ????????????????NaN(not a number) : 指数全为1,底数不全为0 ? ? ? ? 那上述E、M位是否可以改变呢? ????????那当然是可以的 ????????当然指数和尾数分配的位数不同,产生的结果也不同: 
 ????????早期,浮点数的位数是由计算机厂商自己决定的。这样会导致,在不同浮点数规则下,程序在操作浮点数时,需要转换浮点数规则。这使程序移植性变差、开发成本升高等。为解决这一问题IEEE 组织推出了浮点数标准,这个标准统一了浮点数的表示形式,并提供了 2 种浮点格式,R32-24和R64-53。?float,double分别遵循R32-24,R64-53的标准。 ? ? ? ? 而这种标准会使float的精度误差在1e-6;double精度误差在1e-15。 二、判断浮点数是否为0? ? ? ? 我们已经知道了float精度误差在1e-6,也就是说只要浮点数的绝对值小于1e-6,就可认为是0 ? ? ? ? 这里就需要知道一个函数啦: ????????? ? ? ? fabs():求浮点数绝对值; ? ? ? ? ? ? ? ? 拓展:abs():求整数的绝对值。 ? ? ? ? ? ? ? ? 使用以上两个函数需要先引入头文件 代码:? ? ? ? 双精度同理  | 
|  | 
| C++知识库 最新文章 | 
| 【C++】友元、嵌套类、异常、RTTI、类型转换 | 
| 通讯录的思路与实现(C语言) | 
| C++PrimerPlus 第七章 函数-C++的编程模块( | 
| Problem C: 算法9-9~9-12:平衡二叉树的基本 | 
| MSVC C++ UTF-8编程 | 
| C++进阶 多态原理 | 
| 简单string类c++实现 | 
| 我的年度总结 | 
| 【C语言】以深厚地基筑伟岸高楼-基础篇(六 | 
| c语言常见错误合集 | 
|  | 
| 上一篇文章 下一篇文章 查看所有文章 | 
| 
 | 
| 开发:
C++知识库 
Java知识库 
JavaScript 
Python 
PHP知识库 
人工智能 
区块链 
大数据 
移动开发 
嵌入式 
开发工具 
数据结构与算法 
开发测试 
游戏开发 
网络协议 
系统运维 教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 | 
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/1 0:12:55- | 
| 
 | 
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |