专业汉语词典知识平台,分享汉字词语知识、历史文学知识解答!

励北网
励北网

浮点数是什么(c语言浮点数表示规则)

来源:小易整编  作者:小易  发布时间:2023-03-24 12:29
摘要:大家好,我是唐靓。今天是EasyC的第7篇,浮点型。访问github仓库:EasyLeetCode,欢迎明星,欢迎pr~浮点数浮点数是C的第二种基本类型,可以用小数部分表示数字。此外,浮点数的范围比整数大,可以表示更大范围的数字。我们都知...

大家好,我是唐靓。

浮点数是什么(c语言浮点数表示规则)

今天是EasyC的第7篇,浮点型。

访问github仓库:EasyLeetCode,欢迎明星,欢迎pr~

浮点数

浮点数是C的第二种基本类型,可以用小数部分表示数字。此外,浮点数的范围比整数大,可以表示更大范围的数字。

我们都知道,在计算机中,所有的数据本质上都是转换成二进制存储的。整数很简单,转换成二进制后存储01字符串,那么浮点数是怎么存储的呢?

很容易猜到浮点数存储的结果是二进制,但是比直接把整数转换成二进制要复杂一点。需要先用下面一行来表达:

这里,n是我们要存储的浮点数,s是符号位,m是尾数,e是顺序。

符号位很好理解,和整数中的符号位一样,0代表正数,1代表负数。m代表尾数,

。让我们抽象地看一下。我们来看一个例子,比如3.0,转换成二进制(11.0),相当于

1.1 * 2^1。那么,s = 1,m = 1.1,e = 1。

我们知道浮点数的表示,那么它在计算机中是如何存储的呢?这就需要我们进一步分析细节了。

关于M

首先是M,定义为大于等于1小于2的小数。我们可以简单的写成1.xx,其中xx代表小数部分。

由于总是大于等于1小于2,所以它的单位一定是1,所以我们可以省略它,只看它后面的小数部分。我们也用二进制来近似小数部分。比如0.625可以表示为0.5 0.125,也就是2 -1 2-3,二进制就是101,只不过这里它的更高位从-1开始。

以32位浮点数为例。在1位表示符号,8位表示顺序之后,剩下23位用于m。由于我们在小数点之前舍入了1,所以我们的顺序从-1开始,这在理论上相当于24个二进制位。

关于e

在浮点数存储中,e是一个无符号整数。以32位浮点数为例。e有8位,可以代表0-255。

然而,E可以是负的。根据IEEE 754,E的真实值必须是减去一个中间数。对于8位E,它的中间数是127。比如e的实际值是10,但存储时需要存储为127 ^ 10 = 137。

除此之外,E还有另外三种情况:

e不全为0,或全为1时,采用上述的规则表示e全为0时,e等于1-127,有效数字m不再默认加上1,这样是为了还原0.xxx的小数,以及接近于0的数e全为1时,如果有效数字m全为0,表示无穷大,如果m不全为0,表示nan(not a number)

关于E的规则似乎有点复杂,乍一看似乎有点难以理解。为什么要用减去中间值的设计来代替符号位?我仔细考虑后发现,如果引入符号位,很难区分0.xxx和e等于0的情况。虽然也可以通过特殊判断处理,但没有现在这么优雅。

认为看不懂以上的朋友可以直接跳过这一段。毕竟这是浮点数的实现原理,是很低级的内容。C primer对这部分没有太多的阐述。

浮点数的使用

用c语言编写浮点数有两种方法。之一种方法是使用传统的十进制表示法:

double a = 1.23;float b = 3.43;

另一种写法是科学记数法,写为:

double a = 2.45e8;double b = 1e-7;

2.45e8就是2.45 * 10 ^ 8的意思。e后面可以是正数,也可以是负数,但是数字中不能有空。

浮点型

和C一样,C也有三种浮点数:float、double和long double。和integer一样,这三种类型都是浮点数,只是取值范围不同。

浮点数的范围由两部分决定,一部分是有效数字。比如14179是五位有效数,而14000只有两位,因为后三位零是填充位,有效位数不取决于小数点的位置。c要求float通常可以表示7位有效数字,double通常可以有16位,long double至少与double相同。

另外,它们所能表达的指数范围至少是-37到37。一般来说,float是4字节32位,double是8字节64位。当然也要看具体的运行环境。

需要注意的事项

关于浮点数的使用,有几点需要注意。一定要关注他们。

cout输出浮点数会删除结尾的0书写浮点数常量时默认为double类型,如果需要强制表示为float类型,请在结尾加上后缀f或者F,如:2.34f由于浮点数有精度,不能直接判断两个浮点数是否相等,很有可能得不到预期结果,正确的做法是判断精度范围,如:double epsilon = 1e-8;// 判断a是否和b相等if (abs(a - b)

本文地址:百科生活频道 https://www.neebe.cn/live/938493.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


百科生活
小编:小易整编
相关文章相关阅读
  • 兼容性设置(兼容性设置卸载是什么意思)

    兼容性设置(兼容性设置卸载是什么意思)

    知道小编2023-05-01经验7今天给各位分享兼容性设置的知识,其中也会对兼容性设置卸载是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!Win10系统兼容性怎么设置兼容模式开启方法1、...

  • acp(acp是什么酶)

    acp(acp是什么酶)

    喜得利2023-05-01百科5今天给各位分享acp的知识,其中也会对acp是什么酶进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!acp的含义是什么?ACP的含义是敏捷管理专业人士资格认证,是英...

  • 四喜鸭子是什么地方的菜(四喜烤鸭)

    四喜鸭子是什么地方的菜(四喜烤鸭)

    毓秀1062023-05-01美食3本篇文章给大家谈谈四喜鸭子是什么地方的菜,以及四喜烤鸭对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。四喜鸭子是什么品种做的四喜鸭子一般怎么做四喜鸭子是一道特色传统名菜,属于八...

  • 超级保龄球游戏规则(大班体育游戏超级保龄球)

    超级保龄球游戏规则(大班体育游戏超级保龄球)

    解密热身2023-05-01体育91今天给各位分享超级保龄球游戏规则的知识,其中也会对大班体育游戏超级保龄球进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!活动策划活动策划篇1xx年,是社区充满合...

  • 瓶颈期是什么意思(减肥瓶颈期是什么意思)

    瓶颈期是什么意思(减肥瓶颈期是什么意思)

    一条大河2023-05-02知道5今天给各位分享瓶颈期是什么意思的知识,其中也会对减肥瓶颈期是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!“瓶颈期”是什么意思?释义:事物在变化发展过程...

  • wow正义点数(wow正义点数英文)

    wow正义点数(wow正义点数英文)

    一条龙2023-05-02游戏3今天给各位分享wow正义点数的知识,其中也会对wow正义点数英文进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!WOW关于正义点数和声望的问题声望是你在某个势力里的...

  • 跑马的汉子(跑马的汉子呀拉索是什么歌曲)

    跑马的汉子(跑马的汉子呀拉索是什么歌曲)

    帝国单机2023-05-01影视3本篇文章给大家谈谈跑马的汉子,以及跑马的汉子呀拉索是什么歌曲对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。跑马的汉子你威武雄壮歌词歌词是什么意思跑马的汉子你威武雄壮歌词歌词是美...

  • 逆回购是什么意思(卖出逆回购是什么意思)

    逆回购是什么意思(卖出逆回购是什么意思)

    好助手百科2023-05-02财经3本篇文章给大家谈谈逆回购是什么意思,以及卖出逆回购是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。什么叫逆回购?能举例说明一下吗?正回购方就是抵押出债券,取得资金的融...

  • 周排行
  • 月排行
  • 年排行

精彩推荐