Skip to content

Number 类型

整数

  • 十进制

    js
    const num = 10
  • 八进制,第一个数字必须是零。在严格模式下会报错

    js
    const num1 = 070 // 八进制的56
    const num2 = 08  // 无效八进制,当成 8 处理
  • 十六进制,前缀必须是 0x

    js
    const num = 0xA // 十六进制的 10

-0 === +0

浮点值

  • 定义浮点值:必须包含小数点,且小数点后面必须至少有一个数字。最高精度为 17 位小数

    js
    const num1 = 0.1
    const num2 = .1 // 有效,但不推荐
  • 如果数值本身是整数,只是小数点后面跟着0,则会被转化为整数

    js
    const num1 = 1.  // 当成整数 1 处理
    const num2 = 1.0 // 当成整数 1 处理

科学计数法

要求:一个数值后跟着一个大写或小写的 e,再加上一个要乘的 10 的多少次幂(可以是负数)

js
const num = 3.12e5 // 等于 312000

范围

Number.MIN_VALUE ~ Number.MAX_VALUE 之间,超出范围会转换成无穷值(-InfinityInfinity

判断一个数值是不是有限大,可以用 isFinite() 函数

js
inFinite( Number.MAX_VALUE + Number.MAX_VALUE ) // false

NaN

  • 表示要返回的数值不是数值(Not a Number)

  • NaN 不等于任何值,包括自己

  • 涉及 NaN 的任何操作都返回 NaN

  • 可以用 isNaN() 函数判断一个值,是否不是数值

数值转换

Number()

类型转换规则
Boolean- true 转换为 1
- false 转换为 0
Number本身
Null0
UndefinedNaN
String- 字符串包含数值字符,包括数值字符前有 +/- ,转换为十进制数值
- 字符串包含有效的浮点值,转换为浮点值
- 字符串包含有效的十六进制格式,转换为与该十六进制对应的十进制整数
- 空字符串,转换为 0
- 其余情况,则返回 NaN
Object1. 调用 ValueOf(),按照上述规则转换返回的值,如返回结果为 NaN,则走到第 2 步
2. 调用 toString(),再按照转换字符串的规则转换

parseInt():更适合字符串是否包含整数模式

  1. 从第一个非空字符开始转换,即会忽略最前面的空格
  2. 第一个字符不是数值字符、+、-,则返回 NaN(空字符会返回 NaN)
  3. 第一个字符是数值字符、+、-,则继续检查每个字符,直到字符串末尾,或碰到非数值字符
  4. 第一个字符是 0,也可以识别不同进制的整数格式
js
parseInt("")        // NaN
parseInt("123blue") // 123
parseInt("11.22")   // 11
parseInt("0xA")     // 10

可以接受第二个参数,指定进制数

parseFloat():几乎和 parseInt 一样,以下是一些不同之处

  • 检查到字符串末尾,或第一个无效的浮点数值字符为止
  • 直解析十进制,会忽略开头的 0,十六进制始终返回 0
js
parseFloat("22.34.5") // 22.34
parseFloat("0xA")     // 0

包装类型方法

请看 5-3 原始值包装类型Number 包装类型方法