1. 概述

JavaScript 只有一种数值类型,书写数值时带不带小数点均可。超大或超小的数可通过科学计数法来写。

  • JavaScript 数值始终是 64 位的浮点数。此格式用 64 位存储数值,其中 0 到 51 存储数字(片段),52 到 62 存储指数,63 位存储符号:
指数 符号
52 bits(0 - 51) 11 bits (52 - 62) 1 bit (63)
  • 精度:整数(不使用指数或科学计数法)会被精确到 15 位。

  • NaN(非数值):NaN 属于 JavaScript 保留词,指示某个数不是合法数。尝试用一个非数字字符串进行除法会得到 NaN(Not a Number)。

  1. 可使用全局 JavaScript 函数 isNaN() 来确定某个值是否是数。
  2. 如果您在数学运算中使用了 NaN,则结果也将是 NaN。
  3. NaN 是数,typeof NaN 返回 number。
  • Infinity :Infinity (或 -Infinity)是 JavaScript 在计算数时超出最大可能数范围时返回的值。
  1. 除以 0(零)也会生成 Infinity。
  2. Infinity 是数:typeOf Infinity 返回 number。
  • 十六进制 :JavaScript 会把前缀为 0x 的数值常量解释为十六进制。

也可以使用 toString() 方法把数输出为十六进制、八进制或二进制。

【注】一些 JavaScript 版本会把带有前导零的数解释为八进制。

  • 对象 :数值可以是对象,但最好不要把数值创建为对象,它会拖慢执行速度。
1
2
var x = 123;                // 字面方式
var y = new Number(123); // 对象方式
  1. 当使用 == 相等运算符时,相等数值是相等的。
  2. 当使用 === 运算符时,相等数值是不相等的,因为 === 运算符需要类型和值同时相等。
  3. 更糟的是两个对象是无法比较的。

2. 方法

2.1 数值方法

所有数值方法可用于任意类型的数值(字面量、变量或表达式)。

  • toString() :以字符串返回数值。
  • toExponential() :返回字符串值,它包含已被四舍五入并使用指数计数法的数字。参数定义小数点后的字符数。该参数是可选的。如果您没有设置它,JavaScript 不会对数字进行舍入。
  • toFixed() :返回字符串值,它包含了指定位数小数的数字。
  • toPrecision() :返回字符串值,它包含了指定长度的数字。
  • valueOf() :以数值返回数值。
    【注】在 JavaScript 内部使用 valueOf() 方法可将 Number 对象转换为原始值。

2.2 全局方法

  • Number() :可用于把 JavaScript 变量转换为数值。如果无法转换数字,则返回 NaN。

Number() 还可以把日期转换为数字。Number() 方法返回 1970 年 1 月 1 日至今的毫秒数。

  • parseInt() :解析一段字符串并返回数值。允许空格。只返回首个数值的整数部分。如果无法转换为数值,则返回 NaN (Not a Number)。
  • parseFloat() :解析一段字符串并返回数值。允许空格。只返回首个数值。如果无法转换为数值,则返回 NaN (Not a Number)。

3. 属性

属性 描述
MAX_VALUE 返回 JavaScript 中可能的最大数。
MIN_VALUE 返回 JavaScript 中可能的最小数。
NEGATIVE_INFINITY 表示负的无穷大(溢出返回)。
NaN 表示非数字值(“Not-a-Number”)。
POSITIVE_INFINITY 表示无穷大(溢出返回)。

【注】数值属性不可用于变量。这些属性只能作为 Number 的属性访问,比如 Number.MAX_VALUE。使用 myNumber.MAX_VALUE,其中 myNumber 是变量、表达式或值,将返回 undefined。