| |
|
开发:
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年3日历 | -2025/3/4 11:20:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |