繁体   English   中英

Javascript 数字中的位数

[英]Number of bits in Javascript numbers

我只使用整数使用 Javascript(主要是添加数字并移动它们)。 我想知道在不丢失任何位的情况下它们能有多大。

例如, X可以有多大,这样1 << X将代表2^X

JavaScript 中的所有数字实际上都是符合 IEEE-754 的浮点双精度数。 它们有一个 53 位尾数,这意味着任何大小约为 9 万亿或更小的整数值——更具体地说,9,007,199,254,740,991——都将被准确表示。


注意:在 2018 年,主要浏览器和 NodeJS 也在使用新的 Javascript 的原始类型BigInt ,解决整数值大小的问题。

所有答案都部分错误 - 也许是由于新的 ES6/ES7 规范 - ,请阅读原因:

首先,在 JavaScript 中,数字的表示是2^53 - 1这对于@Luke 答案是正确的,我们可以通过运行Number.MAX_SAFE_INTEGER来证明这将显示一个大数字,然后我们执行log2来确认位数相同:

Number.MAX_SAFE_INTEGER
// 9007199254740991

Math.log2(9007199254740991)
// 53

在此处输入图像描述

但是按位运算是在 32 位(4 个字节)上计算的,这意味着如果您超过 32 位移位,您将开始丢失位。

欢迎使用 JavaScript!

JavaScript 中的所有数字都是 64 位(双精度)浮点数。

是对格式的描述以及可以和不能用它表示的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM