就语言定义而言,JavaScript 数字是 64 位 float 。
(使用 32 位整数的按位运算除外。我想即使在 64 位 CPU 上也必须使用后者,例如 1 << 33
必须为 2,即使 CPU 可以做得更好,为了向后兼容。 )
但是,如果编译器可以证明一个数字仅用作整数,它可能更愿意这样实现它以提高效率,例如
for (var i = 0; i < Math.pow(2, 40); i++)
console.log(i)
显然,最好用整数来实现它,在这种情况下,必须使用 64 位整数以保证正确性。
现在考虑这种情况:
for (var i = 0; i < Math.pow(2, 60); i++)
console.log(i)
如果用 float 实现,上述方法将失败,因为 float 不能准确表示大于 53 位的整数。
如果使用 64 位整数实现,它工作正常(好吧,除了不方便的长运行时间)。
JavaScript 编译器是否允许(通过标准的字母和与实际现有代码的兼容性)在提供与 float 不同但更好的结果的情况下使用 64 位整数?
同样,如果 JavaScript 编译器提供的数组包含超过 40 亿个元素,是否允许将数组长度和索引实现为 64 位整数?
最佳答案
MDN information about UInt64 : 由于 JavaScript 目前不包含对 64 位整数值的标准支持,js-ctypes 提供了 Int64 和 UInt64 对象,让您可以使用需要(或可能需要)使用的 C 函数和数据使用 64 位数据类型表示的数据。
您使用 UInt64 对象来创建和操作 64 位无符号整数。
关于javascript - JavaScript 实现可以使用 64 位整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24721766/