Number 类型 用于表示数值。JavaScript 中的所有数值都使用 Number 类型,包括整数和浮点数、正数和负数。Infinity 和 NaN 也用于表示数值,也是 Number 类型。
虽然 number 在概念上是一个“数学的值”,并且总是隐式的编码为浮点类型,但是 JavaScript 提供了位运算符。当应用位运算符时,number 首先转换为 32 位整数。
Number 类型的范围
Number 类型 是一种基于 IEEE 754 标准的双精度 64 位二进制格式的值。
Number 类型能够存储 2-1074(Number.MIN_VALUE)和 21024(Number.MAX_VALUE)之间的正浮点数,以及 -2-1074 和 -21024 之间的负浮点数。
Number 类型仅能安全地存储在 -(253 − 1)(Number.MIN_SAFE_INTEGER)到 253 − 1(Number.MAX_SAFE_INTEGER)范围内的整数。超出这个范围,JavaScript 将不能安全地表示整数;相反,它们将由双精度浮点近似表示。你可以使用 Number.isSafeInteger() 检查一个数是否在安全的整数范围内。
±(2-1074 ~ 21024) 范围之外的值会自动转换:
- 大于
Number.MAX_VALUE的正值被转换为+Infinity。 - 小于
Number.MIN_VALUE的正值被转换为+0。 - 小于
-Number.MAX_VALUE的负值被转换为-Infinity。 - 大于
-Number.MIN_VALUE的负值被转换为-0。
0 和 -0
Number 类型仅有一个具有多个表现形式的值:0。
0 同时表示为 -0 和 +0(其中 0 是 +0 的别名)。实际上,这两者之间几乎没有区别;例如,+0 === -0 是 true。然而,当你除以 0 的时候,你要注意到这一点:
console.log(42 / +0); // Infinity
console.log(42 / -0); // -Infinity
console.log(1 / Infinity); // 0
console.log(1 / -Infinity); // -0
Infinity
全局属性 Infinity 是一个数值,表示无穷大。
Infinity 的初始值是 Number.POSITIVE_INFINITY。Infinity(正无穷大)大于任何值。
NaN
NaN(“Not a Number”)是一个特殊种类的数值,当算术运算的结果不表示数值时,通常会遇到它。
NaN 是 JavaScript 中唯一不等于自身的值。
相关条目
关于运算符提供的数学运算,参见运算符章节。
关于 Math 对象提供的运算方法,参见 Math 对象。
参考
Number 对象
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number
JavaScript 数据类型和数据结构
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Data_structures