美文网首页
转换为数字类型的方法

转换为数字类型的方法

作者: 未路过 | 来源:发表于2022-08-23 09:59 被阅读0次

    1.parseInt()函数

    parseInt() 函数可解析一个字符串,并返回一个整数。
    parseInt(string, radix)
    它会忽略字符串前面的空格,直至找到第一个非空格字符。
    如果第一个字符不是数字字符或者负号,parseInt() 函数就会返回 NaN;
    也就是说,用 parseInt() 函数转换空字符串会返回 NaN。
    如果第一个字符是数字字符,parseInt() 函数会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。
    例如,“1234blue” 会被转换为 1234,因为 “blue” 会被完全忽略。类似地,“22.5”会被转换为 22,因为小数点并不是有效的整数字符

    
        console.log(parseInt('0')) //0  只有0的时候才是0,其他不是数字的时候都是NaN
        console.log(parseInt('10')) //10
        console.log(parseInt('s10')) //NaN
        console.log(parseInt(' 10px ')) //10
        console.log(parseInt(' 10 10 ')) //10
        console.log(parseInt("10.33"))//10
        console.log(parseInt("34 45 66"));//34
        console.log(parseInt(" 60 ") ); //60
        console.log(parseInt("40 years")); //40
        console.log(parseInt("He was 40 60") );//NaN 
        console.log(parseInt("-60") );//-60
    

    第二个参数:表示要解析的数字的基数,通俗的说就是数字的进制,比如二进制、八进制或者十六进制。该值介于2 ~ 36之间。默认为 10进制。
    //当参数 type 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
    //radix 的取值范围是 2~36,如果 radix 为 1 或 radix>36 ,转换结果将是 NaN ,如果 radix 为 0 或其它值将被忽略,radix 默认为 10 。
    //举例,如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。
    //如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

        console.log(parseInt('034'))//34
        console.log(parseInt('0x34'))//52
        console.log(parseInt('12'))//12
        console.log(parseInt())//NaN
        console.log(parseInt(''))//NaN   console.log(Number(''));//0
    
        
        console.log(parseInt("010",10))//10
        console.log(parseInt("010",2))//2
        console.log(parseInt("010",8))//8
        console.log(parseInt("010",16))//16
    
        /* 
        像 "080"这种字符串,有些浏览器会当成8进制解析,有些会当成10进制解析
        var a = "080";
        a = parseInt(a);
        console.log(a);//80
    
        这个时候
        a = “070”;
        a = parseInt(a, 10)//10表示10进制
          a = parseInt(a, 8)//10表示8进制
        可以再parseInt()中传递一个第二个参数,来指定数字的进制
        */
    
    /* 
    如果对非string使用parseInt()或者parseFloat()
    它会先将其转换为string,然后在操作
    */
        console.log(parseInt(undefined))//NaN
        console.log(parseInt(null))//NaN
        console.log(parseInt(true))//NaN
        console.log(parseInt(true))//NaN
        console.log(parseInt({name:'why', age: 18}))//NaN
    

    2.parseFloat()函数

    parseFloat(string)
    parseFloat 是全局函数,不属于任何对象。
    parseFloat() 函数可解析一个字符串,并返回一个浮点数。

    该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,如果在解析过程中遇到了正负号(+ 或 -)、数字 (0-9)、小数点,或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数。同时参数字符串首位的空白符会被忽略。
    如果参数字符串的第一个字符不能被解析成为数字,则 parseFloat 返回 NaN。
    开头和结尾的空格是允许的。

    console.log(parseFloat('3.14'));//3.14
          console.log(parseFloat('120px'));//120
          console.log(parseFloat('rem120px'));//NaN
          var a =  ' 1234.567 ';
          console.log(parseFloat(a)); //1234.567
          var a =  "1234.567px1233";
          console.log(parseFloat(a)); 1234.567
          console.log(parseFloat('10'))//10
          console.log(parseFloat('10.00'))//10
          console.log(parseFloat('10.0001'))//10.0001
          console.log(parseFloat('10.33'))//10.33
          console.log(parseFloat('He was 40'))//NaN
    
    
    /* 
    如果对非string使用parseInt()或者parseFloat()
    它会先将其转换为string,然后在操作
    */
        console.log(parseFloat(undefined))//NaN
        console.log(parseFloat(null))//NaN
        console.log(parseFloat(true))//NaN
        console.log(parseFloat(true))//NaN
        console.log(parseFloat({name:'why', age: 18}))//NaN
    
    

    3.Number()函数

    Number(object)
    Number() 函数把对象的值转换为数字

    
    总结:
    空字符串,都是空格的字符串--》0
    true--》 1 false--》0
    undefined--》nan
    null--》0
    数组记法:arr.length<=1可以正常转,arr.length>1全部NaN
    []//0
    [' '],//0
    [''],//0
    [5],//5
    ['5'],//5
    [1,2,3],//NaN
    {},//NaN 其他对象全部NaN
    
     /* 
    
    字符串--》数字
    1.先去除首尾空格,看是不是纯数字。如果是纯数字,直接转换成数字
    2.如果字符字符串中有非数字内容,则转换成NaN
    3.如果字符串是一个空串,或者是一个全是空格的字符串,则转换成0;
    */
    console.log(Number('123'));//123
    console.log(Number('1.23'))//1.23
    console.log(Number('12'));//12
    console.log(Number(' 12'));//12
    console.log(Number('12a'));//NaN
    console.log(Number('s12b'));//NaN
    console.log(Number('123px'))//NaN
    console.log(Number(''));//0
    console.log(Number('    '));//0 用 parseInt() 函数转换空字符串会返回 NaN
    
    
     /* 
    布尔---》数字
    1.true转成1
    2.false转成0
    
    */
    console.log(Number(true))//1
    console.log(Number(false))//0
    
    /*
    null--》数字
    结果就是数字0
    undefined ---》
    数字NaN
     */
    
    console.log(Number(null)) //0
    console.log(Number(undefined))//NaN
    
           //对象
                //数组记法:arr.length<=1可以正常转,arr.length>1全部NaN
                //1、下边情况可以转数字
                    
                Number([]),//0
                console.log([].length)//0
                Number([' ']),//0
                console.log([' '].length)//1
                Number(['']),//0
                Number([5]),//5
                Number(['5']),//5
                console.log(Number([1,2,3])),//NaN
                //2、String实例对象(下边的newString使用时会把参数转化成字符串,然后返回一个String的实例对象。如果参数不是字符串却有字母,会当变量使用,如new String(12a)会报错)
                Number(new String(123)),//123
                Number(new String('45a')),//NaN
                Number(new String([Infinity])),//Infinity
                //3、其他对象全部NaN
                Number([1,2]),//NaN
                Number([,5]),//NaN
                Number({}),//NaN
    
        
    

    (6条消息) Javascript的Number()总结_big qier~的博客-CSDN博客_javascript number()

    4.隐士转换 (减 乘 除) 用的很少
    1.数字和字符串相减,字符串转成数字;如果字符串不是纯数字就会转成NaN;
    2.两个字符串相减也先转成数字。
    https://blog.csdn.net/qq_51781439/article/details/119875986

    console.log(10 - '20')//-10
       console.log(10 - 'one')//NaN
       console.log('10' - '100')//-90
       
       //数字和字符串相乘,字符串转成数字;
       //如果字符串不是纯数字就会转成NaN;
       //两个字符串相乘也先转成数字。(除法类似)
    
       console.log(10 * '20')//200
       console.log(10 * 'one')//NaN
       console.log('10' * '100')//1000
    
       //数字和字符串大小比较,字符串转成数字;
       //如果字符串不是纯数字就会输出false;
       //两个字符串比较也先转成数字。
    
       var a = 10 < '20';    
        var b = 10 > 'one';
        var c = '10' > '100';
        console.log(a,b,c) //true false flase
    

    相关文章

      网友评论

          本文标题:转换为数字类型的方法

          本文链接:https://www.haomeiwen.com/subject/evligrtx.html