最初の背景:
JavaScript の数値が 64 ビット値であることはわかっていますが、これらの 64 ビットのすべてが整数を表すために使用できるわけではありません。したがって、JavaScript はすべての2^64
数値を表すことはできません。
ただし、すべての2^52
整数を表すことはできます。
簡単な質問は、64 ビットの 2 進数から 10 進数への変換は絶対にできないのでしょうか? または、いくつかのハックがあります。
また、何が起こっているのか理解できないので、これは少し困惑しています...
>>> str_64_1s = '11111111111111111111111111111111111111111111111111111111111'; >>> d = parseInt(str_64_1s, 2) 18446744073709552000 >>> d.toString(2) "1000000000000000000000000000000000000000000000000000000000000" // 1 1 + 64 ゼロ >>> parseInt(d.toString(2), 2) 18446744073709552000 >>> parseInt(d.toString(2), 2) === d 真実 Math.pow(2, 64) == d 真実
関連する議論: