当前位置: 代码迷 >> 综合 >> parseInt()、parseFloat() 与 Number() 使用总结
  详细解决方案

parseInt()、parseFloat() 与 Number() 使用总结

热度:104   发布时间:2023-10-23 21:28:35.0

parseInt()

parseInt(string, radix) 用于解析一个字符串,并返回特定的十进制值。

参数

string: 待解析的字符串。如果该参数不是字符串,将会被转换为字符串。

radix: 字符串基数,指定待解析字符串的进制,范围为 2 =< radix <= 36

解析规则

  1. 将从字符串的第一个非空字符开始,到第一个无效字符结束的一段字符串解析为整数。ps: 有效字符指的是 数字、进制符号(0x)、正负符号
  2. 当待解析参数不是字符串时,先将参数转换为字符串,再执行第一个规则。
  3. 得到的结果是十进制数。

示例

// 普通字符串
parseInt('12') // 12
parseInt('-12') // -12
parseInt('12.1') // 12
parseInt(' 12abc23') // 12
parseInt('abc12') // NaN
parseInt('') // NaN// 进制
parseInt('11', 2) // 3
parseInt('11', 8) // 9
parseInt('11', 10) // 11
parseInt('11', 16) // 17
parseInt('0x11') // 17, 16进制解析为十进制
parseInt('0x11', 10) // 0, 待解析字符串为16进制形式,如果指定为十进制,则有效字符只有第一位0// 其他类型(非字符串)
parseInt(true) // NaN,会先将 Boolean 类型的 true 值转换成字符串 'true',然后执行parseInt('true')
parseInt(11, 2) // 3,会先将数字类型 11 转换为字符串类型 '11',然后执行 parseInt('11', 2)
parseInt(0xF, 16) // 21,会先将 16进制的数字类型 0xF 转换为十进制 15 再转换成字符串 '15',然后执行 parseInt('15', 16)

parseFloat()

parseFloat(string) 与 parseInt 类似,解析一个字符串,并返回浮点数。不同的是,没有第二参数,不需要指定被解析字符串的进制。

参数

string: 待解析的字符串。如果该参数不是字符串,将会被转换为字符串。

解析规则

  1. 将从字符串的第一个非空字符开始,到第一个无效字符结束的一段字符串解析为浮点数。ps: 有效字符指的是 数字、小数点(第一个)、正负符号、科学计数法e
  2. 当待解析参数不是字符串时,先将参数转换为字符串,再执行第一个规则。
  3. 得到的结果是十进制数。

示例

// 普通字符串
parseFloat('1.234') // 1.234
parseFloat('.234') // 0.234
parseFloat('1.234.56') // 1.234
parseFloat('+1.234') // 1.234
parseFloat('-1.234') // -1.234
parseFloat(' 1.234abd') // 1.234
parseFloat('a1.234') // NaN// 科学计数法
parseFloat('1e-2') // 0.01
parseFloat('1e2') // 100

Number()

Number(value) 用于将一个值转换为十进制数字类型。

参数

value:待转换的值,可以是任意类型。

规则

  1. 如果是 boolean 值,truefalse 将分别转换为十进制数 10
  2. 如果是 数字 类型,不做处理直接返回。
  3. 如果是 null,返回 0
  4. 如果是 undefined,返回 NaN
  5. 如果是字符串类型,将遵循以下规则:
    • 如果不符合不符合 javascript 的数字规则,返回 NaN
    • 如果是空字符串将转换成 0
    • 二进制、八进制、十六进制会被转换成十进制;
    • 如果是8进制数,需要使用 0o 开头才能被正确转换。如果只是以 0 开头,0 将被忽略。
    • 浮点数会被转换为对应的浮点数,如果超出长度将会被截断。

示例

Number(true) // 1
Number(false) // 0Number(123) // 123
Number(1.23) // 1.23Number(null) // 0
Number(undefined) // NaNNumber('1.222.3') // NaN ps: 不符合数字表示规则
Number('123a') // NaN ps: 不符合数字表示规则
Number(' ') // 0 ps: 空字符串转换成0
Number('0b11') // 3 ps: 二进制转换为十进制
Number('0xF') // 15 ps: 十六进制转换为十进制 
Number('011') // 11 ps: 纯 0 开头的八进制数,0会被忽略,按十进制解析,八进制需要 0o 开头
Number('0o11') // 9 ps: 八进制换转换为十进制
  相关解决方案