有三个函数可以把非数值转化为数值
Number ()
parseInt ()
parseFloat ()
Number ()
- 如果是Boolean值,true 返回 1,false 返回 0 。
Number(true) //1
Number(false) //0
- 如果是数字,就是原样
Number(3.1415) //3.1415
- 如果是null,返回 0
Number(null) //0
- 如果是undefined,返回NaN
Number(undefined) //NaN
- 如果是字符串,有以下规则
- 如果是字符串中只包含数字(包括前面带正号或负号的情况),则将其转化成十进制数值,
Number ('123') //123
Number ('+123') //123
Number ('-123') //-123
Number ('0110') //110 前面的0会忽略
- 如果字符串中包含的有效的浮点数,就会转化成对应的浮点数,前面的0会忽略
Number ('3.1415') //3.1415
Number ('03.1415') //3.1415
- 如果字符串中包含有效的十六进制格式,前面为
0x
的格式,会自动转化成相同大小的十进制数。
Number ('0x11') //17
- 如果字符串是空字符串,则返回 0
Number ('') //0
- 如果字符串中包含上述格式外的其他字符,则转化成
NaN
。
var x
Number (x) //NaN
// 如果 x 没有用 var 声明过,就会报错。
parseInt ()
-
parseInt
方法用于将 字符串 转为整数。返回值只有两种可能,不是一个十进制整数,就是NaN。
parseInt ('520') //520 整数转化成整数
parseInt ('3.1415') //3 浮点数转化前面的整数部分
parseInt (' 11') //11 前面的空格会忽略
parseInt ('000011') //11 前面的0会忽略
- 如果parseInt的参数不是字符串,则会先转为字符串再转换。
parseInt(1.23) // 1
// 等同于
parseInt('1.23') // 1
- 字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。
parseInt('8a') // 8
parseInt('12**') // 12
parseInt('12.34') // 12
parseInt('15e2') // 15
parseInt('15px') // 15
//parseInt的参数都是字符串,结果只返回字符串头部可以转为数字的部分。
- 如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN。
parseInt('abc') // NaN
parseInt('.3') // NaN
parseInt('') // NaN
parseInt('+') // NaN
parseInt('+1') // 1
- parseInt方法还可以接受第二个参数(2到36之间),表示被解析的值的进制,返回该值对应的十进制数。默认情况下,parseInt的第二个参数为10,即默认是十进制转十进制。
parseInt('1000', 10) // 1000 以十进制解读(默认)
parseInt('1000', 2) // 8 以二进制解读
parseInt('1000', 6) // 216 以六进制解读
parseInt('1000', 8) // 512 以八进制解读
parseInt('10', 37) // NaN 进制超出范围,就返回 NaN
parseInt('10', 1) // NaN 进制超出范围,就返回 NaN
parseInt('10', 0) // 10
parseInt('10', null) // 10
parseInt('10', undefined) // 10 第二个参数是0、null、undefined 则直接忽略
parseFloat ()
-
parseFloat
用于将一个字符串转为浮点数。
parseFloat('3.14') // 3.14 浮点数转浮点数
parseFloat('314e-2') // 3.14
parseFloat('0.0314E+2') // 3.14 科学计数法转换
parseFloat ('3.14abc') // 3.14 转换前面的数值部分
parseFloat (' 3.14') // 3.14
parseFloat ('00003.14') // 3.14 前面的 0 和空格忽略
- 如果第一个字符不能转化成浮点数,就返回
NaN
parseFloat([]) // NaN 空数组返回 NaN
parseFloat('FF2') // NaN 第一个字符不能转化浮点数
parseFloat('') // NaN 空字符串转化为 NaN
parseFloat () 和 Number () 的区别
parseFloat(true) // NaN
Number(true) // 1
parseFloat(null) // NaN
Number(null) // 0
parseFloat('') // NaN
Number('') // 0
parseFloat('123.45#') // 123.45
Number('123.45#') // NaN