parseInt()
parseInt(string, radix)
用于解析一个字符串,并返回特定的十进制值。
参数
string: 待解析的字符串。如果该参数不是字符串,将会被转换为字符串。
radix: 字符串基数,指定待解析字符串的进制,范围为 2 =< radix <= 36
。
解析规则
- 将从字符串的第一个非空字符开始,到第一个无效字符结束的一段字符串解析为整数。ps: 有效字符指的是 数字、进制符号(0x)、正负符号 。
- 当待解析参数不是字符串时,先将参数转换为字符串,再执行第一个规则。
- 得到的结果是十进制数。
示例
// 普通字符串
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: 待解析的字符串。如果该参数不是字符串,将会被转换为字符串。
解析规则
- 将从字符串的第一个非空字符开始,到第一个无效字符结束的一段字符串解析为浮点数。ps: 有效字符指的是 数字、小数点(第一个)、正负符号、科学计数法e 。
- 当待解析参数不是字符串时,先将参数转换为字符串,再执行第一个规则。
- 得到的结果是十进制数。
示例
// 普通字符串
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:待转换的值,可以是任意类型。
规则
- 如果是
boolean
值,true
和false
将分别转换为十进制数1
和0
。 - 如果是 数字 类型,不做处理直接返回。
- 如果是
null
,返回0
。 - 如果是
undefined
,返回NaN
。 - 如果是字符串类型,将遵循以下规则:
- 如果不符合不符合 javascript 的数字规则,返回
NaN
; - 如果是空字符串将转换成
0
; - 二进制、八进制、十六进制会被转换成十进制;
- 如果是8进制数,需要使用
0o
开头才能被正确转换。如果只是以0
开头,0 将被忽略。 - 浮点数会被转换为对应的浮点数,如果超出长度将会被截断。
- 如果不符合不符合 javascript 的数字规则,返回
示例
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: 八进制换转换为十进制