文海小说网

字:
关灯 护眼
文海小说网 > 当我写了个BUG却变成核心玩法 > 第460章 010203

第460章 010203

“这看起来……大概率是浮点数误差导致的经典bug,也就是int型和浮点型运算的转化出现了一些小纰漏。

“动态难度恰好生成了一个特殊的分数,在系统刷新时,分数卡在临界点,变成了一个系统无法正确识别的数据,从而产生了错误的应答,游戏的动态难度就自动降为了最低难度。”

莉莉丝听得一头雾水:“……你说人话!”

顾凡轻咳两声:“好吧,那我换更加通俗的方式来解释。

“不过在此之前,我觉得有必要给莉总你科普一下一些程序的基础知识,否则就算我说破天,你也不会理解为什么出现了小数就会有这种离谱的bug。

“首先,莉总你知不知道在程序里面,0.1+0.2≠0.3?”

莉莉丝有些震惊地张大嘴巴:“为、为什么?”

顾凡解释道:“在现实中0.1+0.2当然是等于0.3的,但在程序里不是,因为程序是二进制的。我们想要把十进制转化成二进制,需要用到‘除2取余法’,也就是说,把十进制的8转化成二进制,那么就需要除四次2,余数分别是0、0、0、1,那么最终转化出来的二进制结果,就是1000。

“但这是整数的转换,当遇到负数、小数的时候,情况又会有一些区别。

“这里我就不展开讲了,总之,想要将十进制的小数转化为二进制,就需要用到‘乘二取整法’,我们先把整数部分十进制转二进制,再把小数部分十进制转二进制,最后再把两个二进制数字的结果进行合并,就得到了一个小数在二进制下的数字。

“但这里有个问题,那就是只有极少数的小数可以通过乘二取整法来完整地转化,还有大量的数字在转化成二进制之后,是无限循环的。

“就比如,十进制的0.1在转化成二进制之后,会变成0.0001100110……而由于计算机的资源是有限的,我们不能直接记录这一长串的数字,就只能记录一个最大化接近0.1的二进制数,这就会造成精度缺失的情况。”

顾凡一边说着,一边在电脑上快速地运算,帮助莉莉丝理解。

而莉莉丝则是眉头紧锁,显然大脑已经处于过载状态,但在顾凡一步一停的耐心解释下,倒是也勉强理解了七七八八。

(本章完)

『加入书签,方便阅读』
内容有问题?点击>>>邮件反馈
热门推荐
限定室友(1v2) 他的视线(西幻1v1) 全网黑后我在军旅综艺杀疯了 万国之国 今天美人师尊哭了吗 完蛋!被困在百合黄游出不去了