Number( )、parseInt( )、parseFloat( )的用法及区别

js中转数字的方法有哪些?我经常会用字符串*1,但是如果碰到一些特殊的情况,使用这种方式会带来不必要的麻烦。下面看一下js提供的3种常见的转数字的方法。

一、 Number()

1.数字正常转换,可处理十进制,二进制,八进制和十六进制。

Number(0000012323) //5331

Number(0xf) //15

Number(001) //1

Number(1.1) //1.1

Number(0.11) //0.11 浮点数也正常转换

Number(00.11) //报错

2.布尔值;其他类型

Number(false) //0

Number(true) //1

Number() // 0 //空返回0

Number('') //0

Number(null) //0
Number(undefined) //NaN

3.字符串

Number('0xf') //15 //1.十六进制格式,如“0xf”,将其转换为相同大小的十进制数值

Number('0000012323') //12323 //2.前导0会被忽略

Number('0.11') //0.11
Number('00.11') //0.11 //3.浮点数会正常转换,并忽略前导0

Number('1b1')//NaN//4.其他情况字符串都返回NaN

4.对象:会先调用valueOf()和toString()方法

Number({a:1}) //NaN === Number('[object Object]') 

Number([1]) //1 ===Number('1')

Number([1,2]) //NaN === Number('1,2')

二、parseInt(num,type)

parseInt有2个参数,第二个参数表示转换数字想要的进制。进行转换时会取整。

1.数字转换,将浮点数转成整数

parseInt(10);

parseInt(10.1) //10

parseInt(10.1,2) //2

parseInt(0.23) //0

parseInt(10.111.1,10) //报错:missing ) after argument list

parseInt(0010.111,10) //报错:missing ) after argument list

2.布尔值;其他类型

parseInt(false) //NaN

parseInt(null) // NaN

parseInt(undefined) //NaN

parseInt() //NaN

parseInt('')  //NaN

3.字符串:字符串开头如果不是正、负、数字返回NaN;遇到非数字或结尾停止解析

parseInt('-1') //-1

parseInt('+1') //1

parseInt('a1') //NaN

parseInt('12a') //12

parseInt('12,a') //12

parseInt('012,a') //12

parseInt('0.12,a') //0

parseInt('0000.12,a') //0

4.对象:会先调用valueOf()和toString()方法,然后按字符串处理

parseInt({a:1}) // NaN === parseInt('[object Object]')

parseInt([1,1.2],2) // 1 === parseInt('1,1.2',2)

parseInt([10,1.2],2) //2 === parseInt('10,1.2',2)

三、parseFloat()

与parseInt() 函数类似,parseFloat() 也是从第一个字符(位置0)开始解析每一个字符。也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。
parseFloat() 只解析十进制,因此它没有第二个参数指定基数的用法

1.数字

parseFloat(0.2222) //0.2222
parseInt(0xf,10) //15

2.布尔;其他类型

parseFloat() //NaN

parseFloat('') //NaN

parseFloat(false) //NaN

parseFloat(null) //NaN

parseFloat(undefined)//NaN

3.字符串

parseFloat('00.123') //0.123

parseFloat('00.123aa') //0.123 //只会取到非数字前一位

parseFloat('-0.123aa') //-0.123

parseFloat('-123.1.3') //-123.1//遇到第二个小数点当非数字处理

parseFloat('-1.0') //-1小数点后为0时返回整数

4.对象:同上

parseFloat([1.33,1.2]) //1.33

parseFloat({a:1}) //NaN

四、区别

Number()、parseInt()、parseFloat()区别总结起来就是:

1.参数上:Number()、parseFloat都只有一个数据源参数;()parseInt()多一个进制处理的参数。

2.处理浮点数:parseInt()会取整;Number()、parseFloat()不会。

3.处理机制:Number处理数据时发现非数字(不包括正、负号)就会返回NaN;parseInt只要在数据开头发现数字就不会返回NaN。

你可能感兴趣的:(类型转换,javascript)