Javascript 数字获取另一个值

标签 javascript node.js google-chrome firefox numbers

我最近发现了一个奇怪的 JS 代码片段,但是我不确定它是否是一个错误或者它是否有一些逻辑。

试试这个号码:9000000022903136*8* 警告它,控制台记录它,将它分配给一个变量。您将获得值 9000000022903136*0*。问题是为什么?这是一个错误吗?

我还注意到你从 90000000229031352 得到 90000000229031360 到 90000000229031368,对于 90000000229031351 你得到 90000000229031340,对于 9000000022903 1369 你得到 90000000229031369。

这发生在:Chrome、FF、Node.js

最佳答案

嗯,计算机中的数字是有限的(大部分)。你在这里看到的是一个 float /双重存储数的经典溢出,它可以包含一些数字,以及它的指数,例如(实际实现不同,当然):

123 存储为 [1 2 3],指数 2。 1.23 存储为 [1 2 3],指数 0。

因此,90000000229031368 存储为:

[9 0 0 0 0 0 0 0 2 2 9 0 3 1 3 6],指数 16。如您所见,最后 8 位没有更多空间,因此设置 你读过了

其他示例可能看起来自相矛盾,但请记住,计算机不会以 10 为基数存储这些数字,而是以 2 为基数。

使用关键字阅读有关此主题的更多信息:Float float (例如在维基百科上)。

关于Javascript 数字获取另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19533604/

相关文章:

javascript - 错误 : No loader specified configuring vue. config.js

javascript - 与 JavaScript 作用域链交互

javascript - Node js与express不加载mongodb数据库内容

node.js - 如何在docker中执行sails js

javascript - 将网页中的npapi插件对象从一个div移动到另一个div,为什么插件会销毁并重新创建?[chrome,FireFox]

html - 字体系列在 Chrome 中自动更改为 "undefined,sans-serif!important"

javascript - 单击 Chrome 通知时转到已打开的选项卡

javascript - AngularJS 中的传单 map 交互

javascript - Chrome控制台报错: Refused to apply style because its MIME type ('text/html' )

javascript - 如何让我的index.htm 文件包含其他html 文件