JavaScript中的数字在32位浏览器中是否以64位数字表示?

4

我对32位浏览器中JavaScript数字的大小有些困惑。它是否仍表示为64位数字,最大值为2^53?


2
它应该是平台无关的。 - Ken Kin
2
附注:Number.MAX_VALUE和Number.MIN_VALUE可用于查找最大值和最小值。 - Karthik
3个回答

8

答案完全错误,这取决于引擎。

在V8(Google Chrome、Opera、Node.js)32位中:

适合31位有符号表示法的整数(从-1073741824到1073741823)直接通过嵌入指针来表示。

任何其他数字通常表示为具有64位双精度字段作为数字值的堆对象(类似于Java Double包装器)。在优化函数中,这些数字可以暂时直接存储在堆栈和寄存器中。此外,某些类型的数组可以“永久性地”直接存储双倍。

在V8 64位中:

与32位相同,除了整数现在可以适合32位有符号表示法(从-2147483648到2147483647),而不是31位。


1
是的,我在Chrome中也注意到了这样的情况。如果你在控制台输入1<<30、1<<31、1<<32,它会揭示整数的处理方式。结果为1073741824、-2147483648、1。看来默认情况下整数确实以32位存储。也许当需要时它们会扩展到64位。 - alvinc

5

是的。在Javascript中,数字是双精度浮点数。无论在哪个平台上运行,它都是相同的。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接