JavaScript 中数字类型的范围是什么?

推荐答案

在 JavaScript 中,数字类型(Number)的范围是从 -2^53 + 12^53 - 1,即 -90071992547409919007199254740991。这个范围是由 JavaScript 的 Number 类型使用 64 位双精度浮点数表示法(IEEE 754 标准)决定的。

本题详细解读

1. JavaScript 数字类型的表示

JavaScript 中的数字类型使用 64 位双精度浮点数表示法(IEEE 754 标准)。这意味着数字在内存中占用 64 位,其中:

  • 1 位用于表示符号(正负)
  • 11 位用于表示指数
  • 52 位用于表示尾数(有效数字)

2. 安全整数范围

由于尾数部分只有 52 位,因此 JavaScript 能够精确表示的整数范围是 -2^53 + 12^53 - 1。这个范围内的整数被称为“安全整数”,因为在这个范围内,JavaScript 可以精确表示每一个整数,而不会出现精度丢失的问题。

  • 最小安全整数:Number.MIN_SAFE_INTEGER,值为 -9007199254740991
  • 最大安全整数:Number.MAX_SAFE_INTEGER,值为 9007199254740991

3. 超出安全整数范围的问题

如果数字超出这个范围,JavaScript 仍然可以表示这些数字,但可能会出现精度丢失的问题。例如:

在这个例子中,90071992547409929007199254740993 超出了安全整数范围,JavaScript 无法精确区分这两个数字,因此它们的比较结果为 true

4. 浮点数的范围

除了整数范围,JavaScript 的 Number 类型还可以表示浮点数。浮点数的范围是从 Number.MIN_VALUE(约为 5e-324)到 Number.MAX_VALUE(约为 1.7976931348623157e+308)。超出这个范围的数字会被表示为 Infinity-Infinity

5. 特殊值

JavaScript 的 Number 类型还包括一些特殊值:

  • NaN:表示“非数字”(Not-a-Number)
  • Infinity-Infinity:表示正无穷和负无穷

这些特殊值在某些数学运算中可能会出现,例如除以零或对负数开平方根。

纠错
反馈