0

首先是一些背景:

我们知道 JavaScript 数字是 64 位值,但并非所有这些 64 位都可用于表示整数。因此 JavaScript 不能代表所有的2^64数字。

但是,它可以代表所有2^52整数。

所以简单的问题是:绝对不可能进行 64 位二进制到十进制的转换吗?或者有一些黑客。

另外,这有点令人困惑,因为我不明白发生了什么......

>>> str_64_1s = '111111111111111111111111111111111111111111111111111111111111111';
>>> d = parseInt(str_64_1s, 2)
18446744073709552000
>>> d.toString(2)
"100000000000000000000000000000000000000000000000000000000000000000" // 1 个 + 64 个零
>>> parseInt(d.toString(2), 2)
18446744073709552000
>>> parseInt(d.toString(2), 2) === d
真的
Math.pow(2, 64) == d
真的

一些相关的讨论:

4

0 回答 0