|
|
1
36
Javascript将所有数字表示为64位 double precision IEEE 754 floating point numbers ECMAscript spec ,第8.5节)所有小于等于2^53的正整数都可以精确编码。较大的整数将其最低有效位截断。这就留下了一个问题:如何在Javascript中表示64位整数——本机数字数据类型显然不能精确地表示64位整数。 出现 为了能够解析表示64位数字的十六进制数,底层数字表示不包含64位。在浏览器中尝试以下操作:
在Firefox、Chrome和IE中,我得到了以下信息。如果数字以64位格式存储,则所有减法的结果应该是1。相反,您可以看到2^53+1和2^53之间的差异是如何消失的。
那你能做什么呢? 如果您选择将64位整数表示为两个32位数字,那么对低32位“字”和高32位“字”应用按位“和”与应用2位“和”一样简单。
让您:
|
|
|
2
14
|
|
|
3
8
现在可以使用新的BigInt内置的数值类型来完成这项工作。BigInt目前(2019年7月)仅在某些浏览器中可用,有关详细信息,请参阅以下链接: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt
|
|
|
4
6
注意 long.js
控制台输出:
|
|
|
5
4
闭包库
|