• 《JS权威指南学习总结--3.1数字》


    3.1数字

    内容要点:

      一.数字直接量:当一个数字直接出现在JS程序中,我们称之为数字直接量。

      二.JS中的算术运算

        Math.pow(2,53)      // => 9007199254740992: 2 的 53次幂 

      Math.round(.6)      // => 1.0: 四舍五入 

      Math.ceil(.6)       // => 1.0: 向上求整 
      Math.floor(.6)      // => 0.0: 向下求整 
      Math.abs(-5)      // => 5: 求绝对值 
      Math.max(x,y,z)    // 返回最大值 
      Math.min(x,y,z)     // 返回最小值 
      Math.random()    // 生成一个大于等于0小于1.0的伪随机数 
      Math.PI        // π: 圆周率 
      Math.E        // e: 自然对数的底数 
      Math.sqrt(3)      // 3的平方根 
      Math.pow(3, 1/3)   // 3的立方根 
      Math.sin(0)      // 三角函数: 还有Math.cos, Math.atan等 
      Math.log(10)     // 10的自然对数 
      Math.log(100)/Math.LN10    // 以10为底100的对数 
      Math.log(512)/Math.LN2      // 以2为底512的对数 
      Math.exp(3)             // e的三次幂
     
       JS中日期和时间
       var then = new Date(2011, 0, 1); // 2011年1月1日 
      var later = new Date(2011, 0, 1, 17, 10, 30);// 同一天, 当地时间5:10:30pm, 
      var now = new Date(); // 当前日期和时间 
      var elapsed = now - then; // 日期减法:计算时间间隔的毫秒数 
      later.getFullYear() // => 2011 
      later.getMonth() // => 0: 从0开始计数的月份 
      later.getDate() // => 1: 从1开始计数的天数 
      later.getDay() // => 5: 得到星期几, 0代表星期日,5代表星期一 
      later.getHours() // => 当地时间17: 5pm 
      later.getUTCHours() // 使用UTC表示小时的时间,基于时区 
     
    三.二进制浮点数
       
        例如:
        var x = .3-.2;
        var y = .3-.1;

         x==y;         //返回false两个值不相等

         这个问题在任何二进制浮点数的编程语言中都会出现。 

         计算没有问题,但比较两个数的时候需要注意。

    四.四舍五入问题和toFixed()方法:

        1.注意toFixed是number方法,下面这个是不能用的

              错误示例:  

               var a=10.005;

                     a.toFixed(2);

                     alert(a);      =>10.005

                需要将其转换为number类型:

              正确示例:

               var a=10.005;

               var num=Number(a).toFixed(2); 

               alert(num);        =>10.01

        2.toFixed(num)里面的num,表示保留小数位后几位小数
     
        3.采用原生的Number对象的原型对象上的toFixed()方法时,
         
              规则并不是所谓的“四舍五入”或者是“四舍六入五成双”,在浮点数末尾≤4或者≥6的情况下的舍入没有争议,但当末尾正好等于5的情况下可谓混乱之极。
     
              例如(chrome和FF):                   

           取两位小数:

              var b=13.005;//13.01
              var c=13.015;//13.02
              var d=13.025;//13.03
              var f=13.035;//13.04

              var g=13.045;//13.04
              var h=13.055;//13.05
              var j=13.065;//13.06
              var k=13.075;//13.07

              var l=13.085;//13.08
              var z=13.095;//13.10
             

              console.log(Number(b).toFixed(2));//13.01
              console.log(Number(c).toFixed(2));//13.02
              console.log(Number(d).toFixed(2));//13.03
              console.log(Number(f).toFixed(2));//13.04
              console.log(Number(g).toFixed(2));//13.04
              console.log(Number(h).toFixed(2));//13.05
              console.log(Number(j).toFixed(2));//13.06
              console.log(Number(k).toFixed(2));//13.07
              console.log(Number(l).toFixed(2));//13.09
              console.log(Number(z).toFixed(2));//13.10

          4.解决方法         

              //重写toFixed方法
              Number.prototype.toFixed=function(len)
              {
                var tempNum = 0;
                var s,temp;
                var s1 = this + "";
                var start = s1.indexOf(".");
               //截取小数点后,0之后的数字,判断是否大于5,如果大于5这入为1
               if(s1.substr(start+len+1,1)>=5)
                 tempNum=1;
               //计算10的len次方,把原数字扩大它要保留的小数位数的倍数
               var temp = Math.pow(10,len);
               //求最接近this * temp的最小数字
              //floor() 方法执行的是向下取整计算,它返回的是小于或等于函数参数,并且与之最接近的整数
               s = Math.floor(this * temp) + tempNum;
               return s/temp;
              };

     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    c#代码:使用假设的方法遍历解决“谁养鱼”问题(据说是爱因斯坦所出的一道推理题) 无为而为
    远洋地暖的使用步骤
    合伙人四大原则
    model y搭载60度磷酸铁锂电池的续航表现
    model3家用充电桩按220V还是380V区别?
    食用油的挑选标准
    职责链模式(Chain of Responsibility)
    通用数据链接(UDL)的用法
    Oracle REGEXP_INSTR 用法
    访问者模式(Visitor)
  • 原文地址:https://www.cnblogs.com/hanxuming/p/5762912.html
Copyright © 2020-2023  润新知