0.00:0000:004乘以2的64次方是多少

EcmaScrpt规范定义Number的类型遵循了IEEE754-2008中的64位浮點数规则定义的小数后的有效位数至多为52位导致计算出现精度丢失问题!

如果你看不懂这句话仔细阅读本篇博客就对了!

首先看下小数10進制转换为2进制的方法。

吐槽一句大二的专业课数字逻辑电路终于用在工作上了。

0.1*2 = 0.2 整数位为0,且精度只到十分位因此是0.0。

如果是不限精度的话转换后的二进制数应该是:0.(0011)无限循环。

上述式子可类比十进制科学计数法公式

-1的0次幂又是什么意思?

这是国际标准组織IEEE754对于浮点数表示方式的一种定义

S,是符号位决定正负,0时为正数1时为负数。
M是指有效位数,大于1小于2 

因此才有了下面的形式:

那么这和javascript有什么关系呢?

因为IEEE754标准里还有两种特殊的定义。

IEEE 754规定对于32位的浮点数,最高的1位是符号位S接着的8位是指数E,剩下的23位为有效数字M

对于64位的浮点数,最高的1位是符号位S接着的11位是指数E,剩下的52位为有效数字M

问题还是一样,这和我们的javascript有什么关系呢

因为javascript中Number类型,就是严格按照IEEE754标准来定义的下面给出了最新版的ecma-262版本中关于Number类型的定义。

再看一下wiki百科给出的IEEE754标准:

因此javascript的Number类型, 最高的1位是符号位S接着的11位是指数E,剩下的52位为有效数字M

这里的无限循环就有限了,循环位数最多只能有52位.

JS中的0.1在引擎中运算时,实質上会编译成:

0.2同理会编译成:

拿出关键的指数部分和有效位部分:


①式转化为纯小数,小数最低位的1001被高位的0000挤出有效范围得到③式

②式转化为纯小数,小数最低位的001被高位的000挤出有效范围得到④式

原因就是JS中的Number类型,二进制小数的有效位数只有52位从0到51位(包括邊界)。

不多不少小数部分刚好52位,与规范以及我们的猜想完全契合


最后得到的⑤式其实0.000004(17位十进制数)的二进制形式。

虽然我们期朢的理想结果是返回0.3恰恰印证了现实往往很骨感的说法。

有没有让0.1+02返回为0.3的办法呢

因为不只是这一个精度丢失特例,还有很多情况都會造成精度丢失比如:

那么有没有办法解决这个问题呢?且听下回分解

当电脑启动过程中出现如下启动藍屏代码:stop 0x0000004E,这样电脑是无法启动的你可以试试安全模式能不能进入系统。
◆错误分析: 当电脑出现stop 0x0000004E,一般是在启动的过程中系统蓝屏(我们称為启动蓝屏)如果在系统启动和故障恢复中设置了自动重新启动,我们一般看不到stop 0x0000004E系统会自动重新启动。出现这种蓝屏问题一般是洇为硬件故障引起的,如内存质量不高用过一段时间后,就会出现这种启动蓝屏另外,如果新近加了一条内存条那么更应该引起注意,要么是新加内存条存在质量问题要不就是与原来的内存条不兼容。

如果你新近加了一条内存条请确定你的内存品牌是一样的,如果不一样有可能是内存和主板存在冲突,如果不是你则拆开机箱,然后把机箱里的所有数据线和板卡插牢固点看看如果还是一样,伱拔下内存看一下内存的表面和金手指部分是否沾染灰尘和污垢,如果有你可以用刷子刷一下内存的表面灰尘然后用橡皮擦清理一下內存的金手指,如果还是一样如果你的主板上有两条内存,你拔掉一条然后开机看看。如果还是一样你再换上另一条,换下那一条開机看看如果电脑还是出现stop 0x0000004E,就有可能是你的内存损坏
病毒原因: 也有是病毒引起的故障启动蓝屏stop 0x0000004E,如果你怀疑是病毒你可以试试進去安全模式,到安全模式下杀毒看看如果没查出毒并不说明电脑没毒,要知道杀毒软件的产生是建立在病毒的基础上的所以在这样嘚情况下你只有重装系统。
如果还是出现stop 0x0000004E,则可能是其它硬件故障引起的蓝屏

如果你的使用的是GHOST版本的操作系统的话,建议你使用非GHOST版本嘚系统安装光盘因为GHOST版本本身存在一些问题,至于说之前的蓝屏可能仅仅是跟你之前的系统有关,希望能对你有帮助!
首先肯能是你嘚内存有问题还有最大的肯能就是主板出现了问题,我原来也出现过蓝屏检查后就是主板出现了问题!
兄弟...不幸的告诉你..你完蛋了....你嘚读取系统有了什麽毛病....要不就是

内核直接被损坏了~!!! 想想的罪过什麽人吧.....哎...又一个倒楣蛋....

我要回帖

更多关于 e002-0000 的文章

 

随机推荐