Javascript数字中的位数

时间:2010-05-10 13:33:00

标签: javascript

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

例如,X代表1 << X会有多大2^X

3 个答案:

答案 0 :(得分:26)

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


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

答案 1 :(得分:5)

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

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

答案 2 :(得分:3)

所有答案都部分错误-也许是由于新的ES6 / ES7规范-,为什么要这么做:

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

Number.MAX_SAFE_INTEGER
9007199254740991

Math.log2(9007199254740991)
53

enter image description here

但是Bitwise operation are calculated on 32 bits ( 4 bytes ), meaning if you exceed 32bits shifts you will start loosing bits.

欢迎使用Javascript!