zoukankan      html  css  js  c++  java
  • JS之Number类

    JS之number类型

    数字类型

    数字类型包含:正数、负数、零(0/-0/+0)、小数、以及特殊的NaN;

    //正数,负数,零,NaN都是属于Number
    // NaN -> Not a Number不是一个数,但是属于数字类型
    console.log(typeof 222);
    console.log(typeof 222.22);
    console.log(typeof -10);
    console.log(typeof -10.34);
    console.log(typeof 0);
    console.log(typeof -0);
    

    Number特性

    进制

    • 十进制(最常用)

    • 八进制(仅了解即可)

      • 第一位必须是0
      • 有效序列0-7(0后面跟着由0-7[包括0-7]之间的数字组成的序列)
      • 如果超出范围
        • 前导位0被忽略
        • 后续数值以十进制计数
    • 十六进制(仅了解即可)

      • 前两位必须0x

      • 有效序列

        • 0-9
        • A-F

    浮点数

    • 小数点后至少一位数字

    • 可以用科学计算法

    • 最高精度:17位小数

    • 缺点

      • 存在舍入误差(浮点数之间的运算也是非常不准确的,需要转成整数,然后再运算,运算后再转回对应的小数)

      • 无法测试特定浮点数值,不要直接对浮点数进行运算;

      • 在做有浮点数运算的情况下,先转成整数,然后得到结果后再转成小数;

        //浮点数直接运算,结果不一定是正确的;
        var test1=0.1+0.2;
        console.log(test1);//0.30000000000000004
        var test2=(0.1*10+0.2*10)/10;
        console.log(test2);//0.3
        
        
    • 数值范围

      • 最小值 Number.MIN_VALUE

      • 最大值 Number.MAX_VALUE:

      • 超出范围

        • 正无穷

          • Infinity
          • Number.POSITIVE_INFINTY
        • 负无穷

          • -Infinity
          • Number.NEGATIVE_INFINITY
        • 缺陷

          • 无法参与下一次计算
        • 检测方法,用isFinite

          isFinite(5e10) // true
          isFinite(2e+310) // false
          

    NaN

    • 含义

      • Not a Number

      • 非数值,不是一个数值,但是NaN属于数值类型;

        console.log(10-"xyz");//NaN   Not a Number
        var NaNVal=10-"xyz";
        console.log(typeof NaNVal);//number  NaN是number类型
        console.log(NaNVal==NaNVal);//false 自己和自己都不相等,因为NaN代表的是不是一个数,属于一个集合的统称;
        console.log((22*"aa")==(22*"bb"));//false
        console.log((22*"aa")==22);//false
        
    • 特点

      • 任何涉及NaN的操作都将返回NaN

      • NaN与人和数值都不相等包括其自身

        console.log(NaN==NaN) // false
        
    • 检测 isNaN

      • 可以转换为数值,为false

      • 不能转换为数值,为true

        //isNaN
        var age=25;
        var ageError=25-"男";
        console.log(isNaN(age));//false       age这个值不是一个数,对吗?      -> 不对  ->false
        console.log(isNaN(ageError));//true   ageError这个值不是一个数,对吗? -> 对    ->true
        

    数值转换的三种方法

    • Number() 最霸道的转换方法,只要不是纯数值类型,全部不能成功转换;
    • parseInt() 是Number的升级版本;有字符串出现也可能转换为数值;从前往后开始转,只要有一位可以转为数字都可以成功转换为数字;123sad可以转为123;(备注:会忽略浮点号;遇到第一个非数值的符号后直接退出转换,其中”.“也是不合法的数值符号)
    • parseFloat() 属于parseInt的升级版本;可以转换为浮点数123.12dw可以转换为123.12;
    • -0 比如”5”-0; 这个方法也属于Number()的;但是它属于隐式调用Number方法;
    • +“52” 这种也可以转化为数字;使用单目加法运算符,也是可以将字符串转换为数字的。(运算符那节会讲,现在仅作了解即可;)
    console.log(10 + "10");
    console.log("10" + "10");
    console.log(+"10"+ + "10");
    console.log((+"10") + (+"10"));// 注:括号是非必需的
    console.log(-"10"+ 10);//了解下
    

    Number()

    数据类型的系统默认转换;

    • Boolean转换为数值的时候

      • true转为1;
      • flase转为0;
    • null转换为数值的时候 转换为0

    • undefined转换为数值的时候 转为NaN

    • string转换为数值的时候

      • 如果只包含数字
        • 转为十进制数
        • 前导0被忽略
      • 如果包含有效浮点格式
        • 浮点数值
        • 忽略前导0
      • 包含有效十六进制格式;相同大小的十六进制整数
      • 空字符串转为0;备注:""是空字符串 " "这个就不是空字符串了
      • 其他格式字符串NaN
    • Object 调用对象的valueOf()方法,然后依照前面的规则转换返回的值,如果转换的结果是NAN,则调用对应的toString方法,然后再次依照前面的规则转换返回的字符串值;

      • ValueOf()
      • ToString()
      console.log(Number("hello word"));//NaN
      console.log(Number(""));//0
      console.log(Number("000011"));//11
      console.log(Number("true"));//NaN
      console.log(Number(true));//1
      console.log(Number("22"));//显式 22
      console.log(Number(false));//显式  ->0
      console.log(Number(true));//显式  ->1
      console.log(Number(null));//显式 -> 0
      console.log(Number(undefined));//显式 NaN
      console.log(Number({}));//显式
      console.log(Number("22.22"));
      console.log(Number("22.22a"));//失败了 NaN
      

    练习

    console.log(("++++++++"));
    console.log(13%10); //13/10    3   多余的3 会被输出
    console.log(5%3);//2
    var time=623648364569346563463;//time单位是秒;转为X分X秒;
    var minis=parseInt(time/60);//保存是分钟
    var second=time%60; // 秒
    var targetVal=minis+"分"+second+"秒";
    console.log("  minis:"+minis+"  second:"+second);
    console.log(targetVal);
    
  • 相关阅读:
    Tomcat在Linux下的安装与配置
    Intel S5000VSA(SAS)主板设置RAID 步骤【转】
    eclipse 安装Subversion1.82(SVN)插件
    shell脚本分析nginx日志
    shell脚本抓取网页信息
    shell脚本备份日志
    电力项目十一--js添加浮动框
    电力项目五--主界面分析
    This function has none of DETERMINISTIC, NO SQL
    mysql导入数据失败:mysql max_allowed_packet 设置过小
  • 原文地址:https://www.cnblogs.com/jiaweixie/p/13089958.html
Copyright © 2011-2022 走看看