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. 网站引导页flash动画跳转js脚本

    if (getCookie("guidance") == null) { document.cookie = "guidance=true"; window.l ...

  2. Java实现应用程序记住用户名、密码功能

    1.      从网上下载jquery.cookie.js,拷贝到应用程序中. 2.      登录页面(login.jsp)导入jquery.cookie.js <script type=&q ...

  3. 新建HomeController控制器 继承BaseController

    CRC这个缩略词,在我看来可以有两种理解:一种是Cyclic Redundancy Check,即循环冗余检错技术:另一种则是Cyclic Redundance Code,即循环冗余校检码.在计算机网 ...

  4. 微信支付服务商模式(受理机构模式)开发注意事项,jsapi支付

    1.首先下载的demo,一般都是有些bug的,先要改一下. 2.微信貌似没有为服务商模式单独开发demo,下载的也都是普通商户的支付demo,其实这里没有必要单独写,因为他们区别就是几个参数的区别. ...

  5. Hibernate5-课程笔记2

    单表的增删改查操作: (1)定义获取Session和SessionFactory的工具类: package com.tongji.utils; import org.hibernate.Session ...

  6. 基于Bootstrap的炫酷jQuery slider插件

    简要教程 这是一款在原生bootstrap slider的基础上制作效果非常炫酷的jQuery slider插件.该slider插件可以自定义slider的颜色.形状.透明度和tooltip等属性,美 ...

  7. mvc路由参数注解

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //过滤掉禁止访问的路由 routes.MapRoute( name: &quo ...

  8. java反射机制(访问私有字段和私有方法)

    来自:http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html 尽管我们通常认为通过JAVA的反射机制来访 ...

  9. jms的初步认识

    (内容取自:http://itindex.net/detail/49721-jms-jms-%E5%BA%94%E7%94%A8) 什么是JMS? JMS即java消息服务, JMS通过消息的形式来降 ...

  10. MySQL5.5.源码安装

    MySQL5.5.34安装需要用到cmke  ncurses-devel yum install -y ncurses-devel cmake gcc gcc-c++ bison 下载http://m ...