非数值转化为数值

有三个函数可以把非数值转化为数值

  • Number ()
  • parseInt ()
  • parseFloat ()

Number ()

  1. 如果是Boolean值,true 返回 1,false 返回 0 。
Number(true)    //1
Number(false)   //0
  1. 如果是数字,就是原样
Number(3.1415)    //3.1415
  1. 如果是null,返回 0
Number(null)  //0
  1. 如果是undefined,返回NaN
Number(undefined)   //NaN
  1. 如果是字符串,有以下规则
  • 如果是字符串中只包含数字(包括前面带正号或负号的情况),则将其转化成十进制数值,
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

你可能感兴趣的:(非数值转化为数值)