Javascript数字中的位数

Mis*_*hko 21 javascript

我只在Javascript中使用整数(主要是添加数字并移动它们).我不知道他们有多大可以不丢失任何一点.

例如,X1 << X将代表多大2^X

Luk*_*keH 27

JavaScript中的所有数字实际上都是符合IEEE-754标准的浮点数双精度数.这些具有53位尾数,其应该意味着具有约9千万亿或更小的大小的任意整数值 - 更具体地,9,007,199,254,740,991 - 将被准确地表示.


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

  • 因此x是53? (2认同)
  • @Revanth:差不多了!可以准确表示的最大整数是((2 ^ 53)-1)或'9,007,199,254,740,991'。实际上,`2 ^ 53`的计算结果为`9,007,199,254,740,992`,但这在理论上不是准确的表示形式,因为缺少1位精度,这意味着`2 ^ 53`与`(2 ^ 53)是无法区分的。 + 1`。 (2认同)

Mar*_*lsi 9

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

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

Number.MAX_SAFE_INTEGER
9007199254740991

Math.log2(9007199254740991)
53
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

欢迎使用 JavaScript!


Syn*_*tic 5

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

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