专业游戏门户,分享手游网游单机游戏百科知识攻略!

嗨游网
嗨游网

浮点数是什么(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)

本文地址:IT知识频道 https://www.eeeoo.cn/itzhishi/938493.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!


IT知识
小编:小嗨整编
相关文章相关阅读
  • beta版是什么意思(iOS 15首个beta版本)

    beta版是什么意思(iOS 15首个beta版本)

    beta是什么意思(iOS15之一个测试版)苹果在WWDC21全球开发者大会上公布了所有平台的最新操作系统。显然,兼容性是果粉非常关心的问题。iOS15适合哪些机型?根据之前的推测,苹果的最新系统最多可以支持五年前的机型。去年iOS...

  • wow大秘境是什么(魔兽大秘境有什么玩的)

    wow大秘境是什么(魔兽大秘境有什么玩的)

    毫无疑问,这是一篇“明目张胆”的安利文章,我们要安利的对象不是市面上那些杂七杂八的游戏。值得为安利编辑的一定是游戏史上的经典,《魔兽世界》的名字一定在经典之列。经过十七年的运营,拥有数千万玩家的《魔兽世界》能称霸MMORPG十几年,无人能...

  • 洪荒之力是什么意思(洪荒之力到底是啥意思)

    洪荒之力是什么意思(洪荒之力到底是啥意思)

    在接受记者采访时,傅表示自己已经“用尽了洪荒之力”。之后很多媒体也争相用洪荒之力做头条,试图表达一个很硬的意思。其实洪荒之力与人无关。标题党之所以蜂拥而至,是因为它根本不知道什么是洪荒之力。那么“洪荒之力”到底是什么?洪水是指地球形成...

  • 适合小孩玩的游乐项目(适合小孩玩的游乐项目是什么)

    适合小孩玩的游乐项目(适合小孩玩的游乐项目是什么)

       今天给大家分享几个适合孩子玩的游乐项目的问题(适合孩子玩的游乐项目有哪些)。以下是小编对这个问题的总结。让我们看一看。1.泰空沙:太空沙能帮助儿童提升创造力,获得更多智慧与快乐。作为益智玩具,太空沙手感柔,具有良好的流动性,玩太空...

  • audio是什么意思(audio是什么意思车上的)

    audio是什么意思(audio是什么意思车上的)

       今天我想和大家分享一下关于音响是什么意思(车上的音响是什么意思)的问题。以下是这个问题的总结。希望能帮到你。让我们看一看。Audio是一个英文单词,有很多含义:Audio是一种压缩的数字声音格式在AU格式下的详细写法;是音频的单词...

  • 收益是什么(如何估算每月的收益)

    收益是什么(如何估算每月的收益)

    我是小文,奇谈怪论,定期分享行业动态,持续输出资讯,与右上角友友资源网一起努力!问大多数人Youyou.com每月挣多少钱,基本上就是一加一减去收入和支出的问题。这是典型会计中的收付实现制,不太准确。今天教你一招,让你的月收入更准确!首先...

  • 浮华是什么意思(浮华尘世的意思)

    浮华是什么意思(浮华尘世的意思)

    意思是人世间的生活虽然多姿多彩。充满各种情况、淫逸。没有根底、世界纷纷扰扰、有句话叫做、重要的是你对世界的认识及看法,追求情感、表面上动人而实际内容空。字华而不实,拼音fúhuá,字义华而不实,很美。虚荣,虚荣和财富。而忘记自己纯洁而被污...

  • 金坷垃是什么(金坷垃是什么东西)

    金坷垃是什么(金坷垃是什么东西)

       今天我想和大家分享一个关于什么是金蛤(什么是金蛤)的问题。以下是小编对这个问题的总结。让我们看一看。“黄金蟹”是一种号称由美国圣地亚哥研发,中国生产的肥料添加剂。它的流行是因为一个广为流传的金蟹三人组争夺金蟹的广告视频。由于广告效...

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

精彩推荐