美文网首页web前端
1.7 number数据类型

1.7 number数据类型

作者: NULL_2022 | 来源:发表于2020-06-30 18:06 被阅读0次

    哪些属于number类型

      1. 正数、零、负数、小数
      1. NaN:not a number不是一个有效数字,但是属于number类型的
      1. Infinity:无穷大的值,也是number类型的

    NaN: NaN和任何值都不相等(包括自己本身)

      console.log(1 == 1);//=> true
      console.log(NaN == NaN);//=> false
    

    使用isNaN验证n是不是有效数字,isNaN验证一个值是否为非有效数字,如果是有效数字,则返回false,如果不是有效数字,则返回true;在使用isNaN检测时,如果检测的值是非数字类型的值,则需要先把其转换为数字类型,然后在进行检测

    • 把其它数据类型转换为数字类型
      • Number([value]);而isNaN在检测的时候,使用的就是这种方式转换为数字类型的
      • parseInt([value]);
      • parseFloat([value]);
     let n = NaN;
     /*
     //这个判断不成立,因为NaN和任何值都不相等包括自己本身
     if(n == NaN){
       console.log("n不是有效数字!");
     }
     */
      console.log(isNaN(1));//=> false,1是有效数字,返回true 
      console.log(isNaN(n));//=>true, n=>NaN 不是一个有效数字,返回true
      console.log(isNaN(Infinity));//=>false,Infinity是有效数字,返回true 
     /*
      如果检测的值是非数字类型的值,则需要先把其转换为数字类型,然后在进行检测
        把其它数据类型转换为数字类型
          + Number([value]);而isNaN在检测的时候,使用的就是这种方式转换为数字类型的
          + parseInt([value]);
          + parseFloat([value]);  
     */
     console.log(isNaN("12"));//先把"12"转换为数字类型=>Number("12")=>12,isNaN(12)=>false
    

    Number是JS内置的转换方法,可以把其它数据类型“强制”转换为数字类型

    • 把字符串转换为数字:一旦字符串中出现非有效数字字符,则结果为NaN,只有都是有效数字字符,才能转换为具体的数字,空字符串会转化为0
    • 把布尔转换为数字:true转换为数字为1、false转换为数字为0
    • 把空转换为数字: null转换为数字为0、undefined转换为数字为NaN
    • 不能把Symbol类型转换为数字,否则会报错
    • 对象转换为数字: 先把对象转换为字符串,再把字符串转换为数字
      • 普通对象;数组对象;其余兑现格式基本上都会变为数字
    • 函数转换为数字:全部都是NaN
    //把字符串转换为数字
      console.log(Number('12'));//=> 12
      console.log(Number('12.5'));//=> 12.5
      console.log(Number('12px'));//=> NaN
      console.log(Number('12.5.0'));//=> NaN
    //把布尔转换为数字
      console.log(Number(true));//=> 1
      console.log(Number(false));//=> 0
    //把空转换为数字
      console.log(Number(null));//=> 0
      console.log(Number(undefined));//=> NaN
    //不能把Symbol类型转换为数字
      console.log(Number(Symbol(1)));//=>Cannot convert a Symbol value to a number at Number
    //对象转换为数字:普通对象
    /*
      1.先把obj转化为字符串 [object Object]
      2.把字符串转换为数字Number("[object Object]");
    */
      let obj = {
        x:100
      };
      console.log(Number(obj));//=>NaN
    //数组对象转为数字:
    
    /*
      1.先把arr转化为字符串 "10"
      2.把字符串转换为数字Number("10");
    
      1.先把arr1转化为字符串 "1,2,3,4"
      2.把字符串转换为数字Number("1,2,3,4");
    
      1.先把arr2转化为字符串 "2,3,4"
      2.把字符串转换为数字Number("2,3,4");
    
      1.先把arr3转化为字符串 "王,李"
      2.把字符串转换为数字Number("王,李");
    */
      let arr = [10];
      let arr1 = [1,2,3,4];
      let arr2 = ["2","3","4"];
      let arr3 = ["王","李"];
      console.log(Number(arr)); //=> 10
      console.log(Number(arr1)); //=> NaN
      console.log(Number(arr2)); //=> NaN
      console.log(Number(arr3)); //=> NaN
      console.log(Number([]));//=> [].toString()=>'';Number('');=>0
    //函数转换为数字
      function func(){}
      console.log(Number(func));//=> NaN
    

    练习

      console.log(isNaN("AA"));//=> true 
      console.log(isNaN("12.5"));//=> false
      console.log(isNaN("12.5px"));//=> true
      console.log(isNaN([]));//=> false
      console.log(isNaN([10]));//=> false
      console.log(isNaN([10,15]));// true
      console.log(isNaN({}));//=> true 
      console.log(isNaN(null)); //=> false
      console.log(isNaN(undefined));//=> true
      console.log(isNaN(Symbol(1)));//=> 报错
    

    parseInt / parseFloat : 把其它数据类型转换为number类型

    • 处理原理和Number不一样,它们是把字符串转化为数字类型(如果处理的值不是字符串,需要先转换为字符串然后再转换为number类型)
      /*
        从字符串最左边开始查找,把找到的有效数字字符转换为数字,一直遇到一个非有效数字为止,则结束查找
        parseFloat比parseInt多识别一个小数点
      */
      console.log(parseInt('12px'));//=>12 
      console.log(parseInt('12px2'));//=>12
      console.log(parseInt('width:12px'));//=> NaN
      console.log(parseInt('12.2'));//=>12
      console.log(parseFloat('12.2'));//=>12.2
      console.log(parseInt(true));//=>先把true转换为字符串“true” parseInt('true');=> NaN
      console.log(parseInt(NaN));//=>先把NaN转换为字符串“NaN” parseInt('NaN');=> NaN
      console.log(parseInt(null));//=>先把null转换为字符串“null” parseInt('null');=> NaN 
      console.log(parseInt("0.8"));//=>0
      console.log(isNaN(Number(parseInt('0.8'))));//=> false parseInt('0.8');=>0 Number(0)=>0 isNaN(0);=>false
    
      console.log(Number(''));//=> 0
      console.log(parseInt(''));//=> NaN
    

    ==、数学运算、isNaN 的转换机制同Number转换机制是一样的


    toFixed:保留小数点后面N位(最后的结果是一个字符串)

      let n = 3.1415926;
      console.log(n.toFixed(2));//=>'3.14'
    

    JS能够有效识别的最大整数:Number.MAX_SAFE_INTEGER

    • ES6中提供了一个新的数据类型BigInt:管理超过最安全数值的数字
      console.log(Number.MAX_SAFE_INTEGER);//=>9007199254740991(最大安全数,JS能够有效识别的最大整数)
      console.log(9007199254740991 == 9007199254740992);//=>false
      console.log(9007199254740992 == 9007199254740993);//=> true,由于超过了JS最大整数值,JS无法精准计算
      //ES6提供了一个新的数据类型BigInt:管理超过最安全数值的数字
      console.log(BigInt(9007199254740992),BigInt(9007199254740993));//=> 9007199254740992n 9007199254740992n
    

    基本数据类型

    • number string boolean null undefined symbol => BigInt新增的基本数据类型

    相关文章

      网友评论

        本文标题:1.7 number数据类型

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