就语言定义而言,JavaScript编号是64位浮点。
(除了使用32位整数的按位运算。我认为即使在64位CPU上也要求后者,例如1 << 33
即使CPU可以做得更好,也必须为2兼容性。)
但是,如果编译器可以证明一个数字仅用作整数,那么它可能更愿意为了效率而实现它,例如
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)
如果使用浮点数实现,则上述操作将失败,因为浮点不能准确表示大于53位的整数。
如果使用64位整数实现,它可以正常工作(除了不方便的长时间运行时)。
是否允许JavaScript编译器(通过标准字母和与实际现有代码的兼容性)在这种情况下使用64位整数,它们提供的结果与浮点不同但效果更好?
同样,如果JavaScript编译器提供的数组超过40亿个元素,是否允许将数组长度和索引实现为64位整数?
答案 0 :(得分:1)
MDN information about UInt64: 由于 JavaScript当前不包含对64位整数值的标准支持,因此js-ctypes提供了Int64和UInt64对象,使您可以使用需要(或可能需要)的C函数和数据使用64位数据类型表示的数据。
使用UInt64对象创建和操作64位无符号整数。