学习C语言笔记:浮点类型float、double和long double

news2024/9/23 3:19:03

浮点类型能表示包括小数在内更大范围的数。浮点数的表示类似于科学计数法(即用小数乘以10的幂来表示数字)。该记数系统常用于表示非常大或非常小的数。 

float

C语言规定,float类型必须至少能表示6位有效数字,且取值范围至少是10^{-37}~10^{+37}。前一项规定指float类型必须能够表示33.333333的前6位数字,而不是精确到小数点后6位数字。后一项规定用于方便地表示诸如太阳质量(2.0e30千克)、一个质子的电荷量(1.6e-19库仑)或国家债务之类的数字。通常,系统存储一个浮点数要占用32位。其中8位用于表示指数的值和符号,剩下24位用于表示非指数部分(也叫作尾数或有效数)及其符号。

double

C语言提供的另一种浮点类型是double(意为双精度)。double类型和float类型的最小取值范围相同,但至少必须能表示10位有效数字。一般情况下,double占用64位而不是32位。一些系统将多出的32位全都用来非指数部分,这不仅增加了有效数字的位数(即提高了精度),而且还减少了舍入误差。另一些系统把其中的一些位分配给指数部分,以容纳更大的指数,从而增加了可表示的范围。无论哪种方法,double类型的值至少有13位有效数字,超过了标准的最低位规定。

long double

C语言的第3种浮点类型是long double,以满足比double类型更高的精度要求。不过,C只保证long double类型至少与double类型的精度相同。

浮点型常量

浮点型常量的基本形式是:有符号的数字(包括小数点),后面紧跟e或E,最后是一个有符号数表示10的指数。例如:

-1.56E+12

2.76e-3

正号可以省略。可以没有小数点(如,2E5)或指数部分(如,19.28),但是不能同时省略两者。可以省略小数部分(如,3.E16)或整数部分(如,.45E-6),但是不能同时省略两者。

例如:

3.14159

-2

4e16

.8E-5

100.

不要在浮点型常量中间加空格:1.56 E+12(错误!)

默认情况下,编译器假定浮点型常量是doble类型的精度。例如,假设some是float类型的变量,编写下面的语句:

some = 4.0 * 2.0;

通常,4.0和2.0被存储为64位的double类型,使用双精度进行乘法运算,然后将乘积截断成float类型的宽度。这样做虽然计算精度更高,但是会减慢程序的运行速度。

在浮点数后面加上f或F后缀可覆盖默认设置,编译器会将浮点型常量看作float类型,如2.3f和9.1E9F。使用l后L后缀使得数字成为long double类型,如54.32和4.32L.注意,最好使用L后缀,因为字母l与数字1容易混淆。没有后缀的浮点型常量是double类型。

浮点值的上溢和下溢

假设系统的最大float类型值是3.4E38,编写如下代码:

float toobig = 3.4E38 * 100.0f;

printf("%e\n", toobig);

会发生什么呢?这是一个上溢的示例。当计算导致数字过大,超过当前类型能表达的范围时,就会发生上溢。这种行为在过去是未定义的,不过现在C语言规定,在这种情况下会给toobig赋一个表示无穷大的特定值,而且printf()显示该值为inf 或 infinity(或者具有无穷含义的其他内容)。

当对一个很小的数做除法时,情况更为复杂。回忆一下,float类型的数是以指数和尾数部分来存储。存在这样一个数,它的指数部分是最小值,即由全部可用位表示的最小尾数值。该数字是float类型能用全部精度表示的最小数字。现在把它除以2.通常,这个操作会减小指数部分,但是假设的情况中,指数已经是最小值了。所以计算机只好把尾数部分的位向右移,空出第1个二进制位,并丢弃最后一个二进制数。以十进制为例,把一个有4位有效数字的数(如,0.1234E-10)除以10,得到的结果是0.0123E-10.虽然得到了结果,但是在计算过程中却损失了原末尾有效位上的数字。这种情况叫作下溢。C语言把损失了类型全精度的浮点值称为低于正常的浮点值。因此,把最小的正浮点数除以2将得到一个低于正常的值。如果除以一个非常大的值,会导致所有的位都为0.现在c库已经提供了用于检查计算是否会产生低于正常值的函数。

还有另一个特殊的浮点值NaN。例如,给asin()函数传递一个值,该函数将返回一个角度,该角度的正弦就是传入函数的值。但是正弦值不能大于1,因此,如果传入的参数大于1,该函数的行为是未定义的。在这种情况下,该函数将返回NaN值,printf()函数可将其显示为nan、NaN或其他类似的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/138107.html

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

相关文章

【阶段二】Python数据分析Pandas工具使用03篇:数据预处理:多表合并与连接

本篇的思维导图: 数据预处理:多表合并与连接 将表结构相同(即变量个数和变量类型均相同)的多张表纵向合并到一张长表中,或者将多张表的变量水平扩展到一张宽表中。 需要注意的是,对于多表之间的纵向合并,则必须确保多表的列数和数据类型一致;对于多表之间的水平扩展,…

电子邮件帐户受损报告,请查收!

我们收到有关恶意访问 Ambire Wallet 电子邮件帐户的报告。 所有这些账户都是用在 CoinMarketCap/Ledger/其他黑客事件中被破坏的电子邮件地址注册的。 我们的内部调查显示,Ambire 的内部系统没有被泄露。我们调查的所有受影响的账户都是因为他们的电子邮件被泄露&…

FOFA(一): FOFA入门

文章目录一、FOFA是什么二、Fafo的使用1. 用户注册2. 一般使用3. 高级用法三、界面解释一般检索结果ip聚合:统计:以ip为单位的资产数据统计:四、API参考一、FOFA是什么 部署在互联网上的网络设备资产信息搜索引擎。旨在尽可能多的对全球IT设备资产进行信息收集、 漏洞扫描&…

java知识图谱+Java语言特点+常用dos命令+Java程序总结

java知识图谱高级语言Java语言特点注释单行注释 //多行注释/* */作用:1.对程序的编写进行解释说明,增强可读性2.调试所写代码单行/多行注释不参与编译;多行注释不可嵌套使用文档注释(Java特有)/** */注释内容可被JDK提…

系统治理 体系规划新型数据安全防护体系

声明 本文是学习2022中国工业数据勒索形势分析报告. 下载地址 http://github5.com/view/55028而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 工业数据勒索应急响应事件攻击者分析 应急响应事件攻击者分析以2022年1-9月所有工业数据勒索应急数据为支撑…

Hadoop HDFS

Hadoop HDFS分布式文件系统分布式文件系统的优点HDFS(Hadoop分布式文件系统)应用常见hdfs集群存储机制元数据管理namespace分布式文件系统 既然我们要学习hdfs那就不能不提分布式文件系统 文件系统是一种存储和组织数据的方法,实现了数据的存储、分级组织、访问和…

Linux DNS 解析与配置 nslookup使用 与 /etc/resolv.conf文件的配置

Linux DNS 解析与配置 序 当我接收到一批新的服务器时,尝试连接外网,比如访问百度的首页: curl www.baidu.com发现报错,不能解析正确的主机名。这个其实就是主机在解析主机名时没能正确发现对应的主机的 ip。当我们使用类似于域…

华为交换机配置笔记

交换机(Switch)是一种用于电信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路,最常见的交换机是以太网交换机,其他常见的还有电话语音交换机、光纤交换机等,交换机是集线器的升级替代产品,理论上讲交换机就是按照通信两端传输信息的需求,将需要的…

ONES 入选极客公园「2022 中国创新力量 50 」榜单

极客公园调研发现,2022 年是企业服务的「双杀」转折点:内部造血的难度升级,外部输血的可能性降低。为了表彰逆流而上的企服公司,极客公园对其给予了重点鼓励和点评。其中,企业级研发管理平台 ONES 入选了极客公园 2022…

vue js游戏,抗疫小游戏,抗疫的汤圆,仅以此小游戏献给所有为抗击疫情做出贡献的人

vue js游戏,抗疫小游戏,抗疫的汤圆,仅以此小游戏献给所有为抗击疫情做出贡献的人 完整代码下载地址:vue js游戏,抗疫小游戏,抗疫的汤圆 建议在pc上使用Chrome浏览器进行访问,如果只能手机玩&a…

还不快收藏起来!何恺明全网最全论文合集

原创/文 BFT机器人 人物简介 何恺明,Facebook AI Research (FAIR) 的一名科学家,研究领域包括计算机视觉和深度学习,并且在计算机视觉和深度学习方面发表了众多极具影响力的论文。 他发表的论文中,有关深度残差网络 (ResNets) 的…

当下的零售新进化,同以往的电商时代还是有着很多区别的

一场数字化的浪潮,正在各行各业深刻上演着。在零售领域,亦不例外。以往,提及零售,我们更多地想到的是,各式各样的电商平台,我们看到的是,各式各样的电商模式;现在,提及零…

学习一下如何使用python实现一个超级卡哇伊的五角星吧

Hello呀朋友们~ 今天实在想不出要写啥了,但是前两天有朋友让我写一个五角星,这个好说呀,必须安排的妥妥当当的!!!!! 在这里我就不多说了,这个也挺简单的,那…

新代机床联网

一、设备信息确认 1、确认型号 数控面板拍照确认: 此系统为:6TA 2、确认通讯接口 1、数控面板的后面 2、其他位置 其他位置一般是前面两个位置用网线引出来后做的网口母头,常见在机床数控面板侧面,机床电器柜后面等等。 3、…

Kubernetes知识扫盲

1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应…

SQL数据库—事务(ACID特性、数据库恢复技术)

各位朋友大家好,博主新创立了一个公众号《自学编程村》哈,感兴趣的可以也关注关注捏~~ 【简介】 它是由村长发起,然后邀请了一些小伙伴来作为自己的嘉宾,不定时的为大家分享学习、生活、信息。他们中间,有来自中国科学…

调整网关或iptables导致ssh连接未响应

同一子网之间可以相互连接,问题服务器可以通过同一子网的其他机器ssh连接,通过VPN可以直接连接到同一子网的其他服务器,但是无法直接连接问题服务器 ssh连接一直停在连接状态 xshell连接如图 问题服务器A无法上外网,之前调整过网…

node.js创建网站实例2

1.在cmd中输入:npm install express -s 2.在demo01文件夹中新建api.js,代码如下: // 1.先引入express模块,express是一个函数 var express require("express") //2.执行express函数;用变量接收express函数…

《图的基础概念》

【一】图的基本概念 图是由顶点集合和顶点之间的关系组成的一部分&#xff1a;G&#xff08;V&#xff0c;E&#xff09;&#xff0c;其中&#xff1a; 顶点集合V {x|x属于某个数据对象集}是有穷非空集合&#xff1b; E {(x,y)|x,y属于V}或者E {<x, y>|x,y属于V &…

ElasticSearch6.x版本的SpringBoot增删改查操作和ElasticSearch6.x版本的过滤查询

文章目录一、SpringBoot操作ElasticSearch前期准备工作二、SpringBoot增删改查ElasticSearch1.新增修改2.删除3.查询三、ElasticSearch中的过滤查询1.概念介绍2.过滤语法3.常见的过滤器类型① term filter② terms filter③ ranage filter④ exists filter⑤ ids filter一、Spr…