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;
          };

 
 
 
 
 
 
 
 
 
 
 

《JS权威指南学习总结--3.1数字》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. TheFifthWeekText

    类的构造方法是当创建对象时,对象自动调用的对对象进行初始化的方法.他没有返回值,而且构造方法名与类名是相同的.如果类中没有定义构造方法,Java编译器在编译时会自动给它提供一个没有参数的默认构造方法, ...

  2. drupal7 boost模块为登录用户提供缓存

    这段时间研究Drupal7的缓存相关,看了好多资料,都提到了boost和authcache两个模块,今天来说一下boost. 具体的下载安装,配置等,官网写的听清楚,boost模块地址 ,安装配置方法 ...

  3. mac版Tomcat安装

    挺好安装的,就是网上资料有的错了. 1.下载Tomcat 网址:http://tomcat.apache.org,解压在~/Downloads 目录下,我的版本是apache-tomcat-7.0.7 ...

  4. angular $parse $eval parse VS eval

    $parse  angular中重要指令介绍($eval,$parse和$compile) Advanced Angular: $parse $parse ---------------------- ...

  5. mysql加密和解密

    MySQL 4.1版本之前是MySQL323加密,MySQL 4.1和之后的版本都是MySQLSHA1加密, (1)以MySQL323方式加密 select  old_password('111111 ...

  6. XAMPP 的MYSQL无法启动

    最近在学习小程序,小程序的后台cms系统需要安装XAMPP软件,这个软件是个集成软件,里面有MySql 和 Apache 等 ,首先进入小程序后台时需要启动MySql 和 Apache Apache ...

  7. JavaScript——Cookie

    JavaScript中的Cookie基础 页面用来保存信息的,比如登录.记住用户名. [cookie的特性] (1)同一个网站中所有页面共享一套cookie: (2)数量.大小有限: (3)有保质期, ...

  8. 记一次-angular-数字格式化

    一个收费功能模块,需要做数据验证. input标签的ng-model的数据格式化 <input type="number" class="form-control& ...

  9. 【转】MapReduce的优化

    相信每个程序员在编程时都会问自己两个问题“我如何完成这个任务”,以及“怎么能让程序运行得更快”.同样,MapReduce计算模型的多次优化也是为了更好地解答这两个问题. MapReduce计算模型的优 ...

  10. 未知的生成错误 因为没有预加载,所以无法解析程序集 GalaSoft.MvvmLight

    使用wpf开发时,在ViewModel中引用了DevExpress注册的GalaSoft.MvvmLight命名空间,使用其ViewModelBase,在View界面中绑定事件时出现错误: 错误 13 ...