数值转换-number,parseInt,parseFloat

数值转换

  1. Number() 可以用于任何数值类型
    • 如果是Boolean类型,true和false分别被转换成1和0
    • 如果是数字值,只是简单的传入和传出
    • 如果是null,返回0
    • 如果是undefined,返回NaN
    • 如果是字符串
      1. 如果字符串只包含数字,则将其转化为十进制数字,‘1’会被转化成1,‘123’会被转化为123,‘011’会被转化为11(会忽略字符串前导0)
      2. 如果字符串包含有效的浮点格式,‘1.1’会被转化为1.1,同样忽略前导0
      3. 如果字符串包含有效的十六进制格式,例如‘0xf’,则将其转化为相同的浮点数值
      4. 如果字符串是空的,则将其转化为0
      5. 除上述格式外,将其转化为NaN
    • 转化缺点:转换复杂而且不合理,因此引入了parseInt()和parseFloat()
  2. parseInt( string , 进制数 ) 会忽略字符串前面的空格,直到找到第一个非空格字符
    • 如果第一个不是数字字符或者正负号,parseInt会返回NaN

    • 空字符串会返回NaN

    • 如果第一个字符是数字字符,parseInt就会解析第二个字符,知道解析完所有后续字符,直到遇到了一个非数字字符。

      var num1 = parseInt('123blue')  //1234
      var num2 = parseInt('')         //NaN
      var num3 = parseInt('0xA')      //10 十六进制
      var num4 = parseInt('70')       //70
      
    • 在ECMAscript3 javascript引擎中,parseInt可以解析八进制,而在ECMAscript5 javascript引擎中parseInt已经不再具有解析八进制的能力,前导零会被默认无效,所以引进了第二个参数

      var num1 = parseInt('AF',16) //175
      var num2 = parseInt('AF')  //NaN  可以按照2,8,10,16进制转换
      
  3. parseFloat( string )
    • 从第一个字符开始解析,一直解析到字符串末尾,遇到第一个无效的浮点数字符为止。也就是说字符串中的第一个小数点是有效的,第二个小数点就是无效的,‘22.34.5’将会被转化为22.34

    • parserFloat会始终忽略前导的零,十六进制格式的字符串始终都会被转化成零

    • parseFloat只能解析十进制,因此没有第二个参数指定基数的用法

    • 如果没有小数点,或者小数点后面是零,则会返回整数

      var num1 = parseFloat('1234blue') // 1234整数
      var num2 = parseFloat('0xA')      //0
      var num3 = parseFloat('22.5')			//22.5
      var num4 = parseFloat('22.3.5')    //22.3
      var num5 = parseFloat('0980.5')    //980.5
      

猜你喜欢

转载自blog.csdn.net/chen_junfeng/article/details/109038728
今日推荐