登陆注册
66052300000151

第151章 真正深入了解NBT-3

在上一章,我们讲完了NBT数据类型中数值类型中的整形形式。按照作者我归纳的:

[字符]

字符串(String)

[数值]

{整形}

字节型(Byte:B)

短整型(Short:S)

整型(Int:I)

长整型(Long:L)

{浮点型(小数)}

单精度浮点型(Float:F)

双精度浮点型(Double:D)

[数据]

复合标签(Compound)

列表(List)

[数组]

字节型数组(Byte Array:[B])

整型数组(Int Array:[I])

长整型数组(Long Array:[L])

接下来就应该是小数(浮点数)了。

小数有两种数据类型,这两种类型我们都已经在之前的章节接触过,即:

单精度浮点型(Float:F)

双精度浮点型(Double:D)

在第一百三十二章,作者就讲过单精度浮点型和双精度浮点型的占用空间,即:

单精度浮点型——占用空间:32位(4字节)

双精度浮点型——占用空间:64位(8字节)

同时我也提了这两个类型的数值范围:

单精度浮点型:-3.4×103?~3.4×103?

双精度浮点型:-1.79769313486232×103??~1.79769313486232×103??

经过了上一章的了解,我们已经知道同样是32位占用空间的Long长整形,它的数值范围达到了:

-(2?3)~2?3-1

即:-922'3372'0368'5477'5808~922'3372'0368'5477'5807

但单精度浮点型却达到了:

-340'0000'0000'0000'0000'0000'0000'0000'0000'0000~340'0000'0000'0000'0000'0000'0000'0000'0000'0000(负三百四十涧至三百四十涧[注:一涧为万沟,一沟为万穰,一穰为万秭,一秭为万垓,一垓为万京])

为什么在相同的存储空间下,Long长整形的数值范围才达到京的程度,而Float单精度浮点型的数值范围却已经达到了涧的程度了呢?这到底是人性的扭曲还是道德的沦丧?

这还没完。我们知道,整数它规定一个最大范围,正负整数就都有其自己的最大值和最小值了。但小数不一样,你规定一个最大值,但它还可以无限增加它的小数位数,如:

1.76×10????????????????

这数虽然很小,但小到小数位数就有999'9999'9999'9999将近千兆位了。如果要表示这串数字,光是4B的空间是绝对不够的。所以,浮点数数值类型也有其自己的小数位数最大值:

单精度浮点型:45位小数位数

双精度浮点型:45位小数位数

看来小数位最大值都一样嘛。

刚才我们提了两个问题:

1.为什么在相同的空间下,Long长整形的数值范围才达到京的程度,而Float单精度浮点型的数值范围却已经达到了涧的程度了呢?

2.这到底是人性的扭曲还是道德的沦丧?

首先我们来解答第一个问题。

其实,不管是什么浮点数,管他是单精度、双精度还是三精度,它们都有一个标准,这个标准就是:IEEE 754-2008(IEEE二进位浮点数算术标准)

这个标准规定了很多东西,想深入了解的话可以去百度百科上,这里就不细讲了。

其中,最重要的也是最简单的莫过于一个公式:

Value=sign bit×exponent bias×fraction

即一个浮点数,等于符号位乘以指数偏移值再乘以分数值。

看不懂是吧?其实,浮点数的表示方法就是用到了我们在学前班就学到过的“科学计数法”。

比如我们的单精度浮点型,它的32个位分别是:

0'00000000'00000000000000000000000

(符号位:1)'(阶码:8)'(尾数:23)

看来还是看不懂啊。算了,总之,是因为浮点数采用了科学计数法的方式来存储,才可以在32位的空间内塞入这么大的数值。

这就是第一个问题的答案。

第二个问题的答案就非常简单了,是:无法确定,因为人类的情绪是无法用语言准确表达出来的,最多也只能表达个大概。

现在我们知道浮点数使用的是科学计数法来存储。这种存储方法有利也有弊:利在于可存储数值的范围扩大了很多;但弊也有,就是能准确存储的数值范围缩小了。

啥意思呢?刚才说过,Long长整形的数值范围是:

-922'3372'0368'5477'5808~922'3372'0368'5477'5807

在这个范围内,存储的数值都是非常准确的,不会你给了个在这个范围内的数,计算机就在后台为了方便给你这个数四舍五入或者砍了几个0。因此,我们就把这个Long长整形的数值范围又叫做Long长整形的有效数值范围。

但浮点数就不一样了,由于使用科学计数法存储,导致数值范围看起来很大,但实际有效数值范围只有那么一点点:

单精度浮点型:7位(整数)

双精度浮点型:16位(整数)

对比一下Long长整形的有效数值范围:19位(整数)

哦天哪!这浮点数,就像是MC的真区块和假区块一样——别看MC边长可以达到21'4748'3647×21'4748'3647,实际上有效游玩范围只有2999'9999×2999'9999,出去了就各种BUG、特性、崩坏,可能时不时还跳出个桌面。

这就告诉了我们一个人间真理:

很多时候,国产游戏广告的内容看起来很牛逼,实际上真实游戏内容只有宣传其中的1%都不到。

嗯,这很资本家。

好了,回到正题。我们目前已经知道了两个浮点型的数值范围、小数位数最大值、有效数值范围和占用存储空间。但别忘了,很多NBT数据类型都有类型字母的,我们的两个浮点型也不例外,都有自己的字母:

单精度浮点型:f

双精度浮点型:d

具体用法就不再多说了。

我们知道,浮点数是可以表示整数也可以表示小数的。那么在表示整数时,我们要不要加上小数点呢?

答案是加不加都可以,当然最好是加上。

总而言之,两个浮点型的特性分别是——

单精度浮点型:

1.数值范围为-3.4×103?~3.4×103?

2.占用空间32位(4字节)

3.使用IEEE 754-2008标准

4.小数位数最大值位45位

5.有效数值范围为7位整数

6.类型字母位f

7.小数部分都为0时(即值为整数),可不加小数点,但最好要加上。

双精度浮点型:

1.数值范围为-1.79769313486232×103??~1.79769313486232×103??

2.占用空间64位(8字节)

3.使用IEEE 754-2008标准

4.小数位数最大值位45位

5.有效数值范围为16位整数

6.类型字母位d

7.小数部分都为0时(即值为整数),可不加小数点,但最好要加上。

同类推荐
  • 异世人生之精灵弓手

    异世人生之精灵弓手

    网游皮,软科幻,慢热型作品。一次更新,两个截然不同的游戏世界相连。修仙和魔幻,设定不同,照样可以一起玩耍!无法下线的精灵族玩家年年,千里迢迢来到华夏,为了寻找自己无法下线的理由,也为了寻找记忆中的亲人。亲人还没找到,但是发现了不少奇怪的npc?说!你们哪一个是反派大boss?先让我攻略一下! —————————— 非典型女频文,无系统无数据 设定比言情多,全员双商在线 人生如此精彩绝伦,恋爱只是锦上添花,何必喧宾夺主?
  • 穿越王者我是大乔

    穿越王者我是大乔

    迷迷糊糊穿越到了王者大陆……七七:安分守己过日子。小七:看姐撩汉!
  • 网游之国风

    网游之国风

    二十一世纪,网络游戏产业终于引起国家高度重视,因此创作发布这款《国风》来确立属于我华夏的国风网游。
  • 虚逆人生

    虚逆人生

    规则与秩序编织的罗网希望与新生引燃的火种虚幻与现实交汇的世界这里是我的世界,我就是命运的主宰
  • 武魂不好系统来凑

    武魂不好系统来凑

    什...什么?作为一个武者,我的武魂居然是石头?没事,我能用巨石打怪。什么?我现在只能幻化小石头?系统,你给我个说法!!!
热门推荐
  • 重生之暗夜天使

    重生之暗夜天使

    十岁那年,母亲失踪,继父打骂。她在一个下雨的夜晚逃出,却遇上车祸,变成了植物人。等她醒来,已经是六年之后。被好心的养母收养,又有温柔的“哥哥”照顾,她原以为自己又得到了幸福。可是,阴差阳错地,她进了生父的公司,做了同父异母哥哥的助理。面对这个当年狠心抛弃她的父亲,她的心底产生恨意。暗暗地,她开始报复,要将自己所受的所有痛苦加倍偿还。可是,事情并不是她想象中那么顺利,她恋上养母的儿子,自己的哥哥,又在同父异母“哥哥”的畸恋中艰难生存。她渐渐发现了更多不可告人的秘密~~~上一辈的恩怨纠缠,这一代的爱恨交织。心力交瘁的她,最终能得到幸福吗?
  • 蜜宠360度:恶魔校草呆萌甜心

    蜜宠360度:恶魔校草呆萌甜心

    【新书已发:《专宠甜心:校草大人求带走》】(本文是宠文)开学第一天,他撞倒了她,她又打了他,还跟这个恶魔同桌!不仅这样,还被他夺了初吻,跟他同居??她注定与他势不两立!在她找到自己的竹马——林皓阳,准备追求时,他却说:“凌汐月,不许你去追他!”于是,光天化日之下他再次强吻了她,让她成为全校女生公敌。某天,她发现,自己居然喜欢上了他??
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 恰好年少遇见你

    恰好年少遇见你

    一场意外中的相遇,再次见面时两人都不记得了对方。成绩一向一塌糊涂的男孩竟为了她考上了A大像日出一样,越来越好,所有的一切对视时的慌乱失措都是喜欢你啊!那么优秀的你怎么会喜欢这么差劲的我呢?不是自作多情,是你喜欢我我也正好喜欢你
  • 堰塘

    堰塘

    这是一个小堰塘,这是一个大世界,在春光无限好下是一个死水堰塘。
  • 千寻之泪

    千寻之泪

    问世间,何事最苦?是相爱相杀!情不为因果,缘注定生死。放过他人为慈,放过自己为悲!前世如若不相欠,今生又怎会相见?爱不可说,恨不可说,嗔不可说,怒不可说……彼岸花的花语是:期待与挚爱的你,来生再见!千寻之意是:记住过去,记住心中的挚爱,众里寻他千百度……十世虐恋,落泪千寻!生当复来归!
  • 龙争龙斗

    龙争龙斗

    龙族,大陆一开始的霸者人类,短暂的生命,却将一个又一个强者拉下历史舞台少年伊古达,怀揣着成为顶级强者的梦想与巨龙生活在原始森林中直到有一天,一个女人的到来打破了原有的平静。因为她的到来,伊古达被迫踏入了人类的舞台。一步步走向新的秩序之路
  • 都市之至尊旷世之主

    都市之至尊旷世之主

    一拳碎山河,跺脚镇八荒,九转通天唯有我,奇才旷世少年郎!我是韩东,将要成为旷世之主的男人!
  • 重生之萌妻从天降

    重生之萌妻从天降

    自从洛伊从天而降掉入了某腹黑的怀里,轩辕王朝就彻底变了天“墨墨,我要吃天下楼的烤鸡”“来人把天下楼买下来”“我要那顶凤冠”“来人,去告诉皇上,皇位我要了”“我不要生小孩”“这可由不得你”
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!