【问题标题】:Can a JavaScript implementation use 64-bit integers?JavaScript 实现可以使用 64 位整数吗?
【发布时间】:2014-09-03 11:56:54
【问题描述】:

就语言定义而言,JavaScript 数字是 64 位浮点数。

(除了使用 32 位整数的按位运算。我想后​​者即使在 64 位 CPU 上也是必需的,例如,即使 CPU 可以做得更好,1 << 33 也必须为 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 位整数?

【问题讨论】:

标签: javascript 64-bit


【解决方案1】:

MDN information about UInt64: 由于 JavaScript 目前不包括对 64 位整数值的标准支持,js-ctypes 提供了 Int64 和 UInt64 对象,让您可以使用需要(或可能需要)使用的 C 函数和数据使用 64 位数据类型表示的数据。

您使用 UInt64 对象来创建和操作 64 位无符号整数。

【讨论】:

    猜你喜欢
    • 2019-03-25
    • 1970-01-01
    • 2015-05-12
    • 2016-10-20
    • 1970-01-01
    • 2010-09-14
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多