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

时间:2022-09-18 09:03:26

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. 《JS权威指南学习总结》

    JS权威指南学习总结:http://www.cnblogs.com/ahthw/category/652668.html

  2. 《JS权威指南学习总结--开始简介》

    本书共分成了四大部分: 1.JS语言核心 2.客户端JS 3.JS核心参考 4.客户端JS核心参考 其中 <JS权威指南学习总结--1.1语法核心> 是:第一部分JS语言核心 各章节重点 ...

  3. 《JS权威指南学习总结--1&period;1语言核心》

    1.1语言核心 --本节主要介绍<js权威指南>基础部分各章讲解内容和一些简单的示例 本小节内容: 一.第二章讲解js注释.分号和Unicode,第三章主要讲解js变量和赋值 简单示例: ...

  4. Node&period;js权威指南学习记录

    学习nodeJS权威指南的学习记录 导航: 1.console模块 2.全局变量 3.Buffer对象 4.事件对象 5.网络请求 6.文件操作对象 一. COMMON.js的学习.(commonJS ...

  5. 《JS权威指南学习总结--第二章词法结构》

    第二章词法结构 内容要点: 一.注释 1. //表示单行注释 2. /*这里是一段注释*/ 3.一般编辑器里加注释是:选中要加注释的语句,按 ctrl+/ 二.直接量 所谓直接量,就是程序中直接使用的 ...

  6. 《JS权威指南学习总结--9&period;3 JS中JAVA式的类继承》

    内容要点: 一.JS中的类 1.JAVA或其他类似强类型 面向对象语言的 类成员的模样 实例字段:它们是基于实例的属性或变量,用以保存独立对象的状态. 实例方法: 它们是类的所有实例所共享的方法,由每 ...

  7. 《JS权威指南学习总结--9&period;2 类和构造函数》

    内容要点: 例9-1展示了在JS中定义类的其中一种方法.但这种方法并不常用,毕竟它没有定义构造函数,构造函数是用来初始化新创建的对象的. 使用关键字new来调用构造函数会自动创建一个新对象,因此构造函 ...

  8. 《JS权威指南学习总结--9&period;1 类和模板》

    内容要点: 一.JS类 在JS中,类的所有实例对象都从同一个原型对象上继承属性.因此,原型对象是类的核心.在例6.1 原型中定义了inherit()函数(通过原型继承创建一个新对象),这个函数返回一个 ...

  9. 《JS权威指南学习总结--8&period;8 函数式编程和8&period;8&period;1使用函数处理数组》

    内容要点:    和Lisp.Haskell不同,JS并非函数式编程语言,但在JS中可以像操控对象一样操控函数,   也就是说可以在JS中应用函数式编程技术.ES5中的数组方法(诸如map()和red ...

随机推荐

  1. html设置透明度

    在html中,设置元素的透明度 在css相应元素中添加下面两行代码即可. filter:alpha(opacity=50); /*仅在ie中支持*/ opacity:0.5; /*不支持ie*/ op ...

  2. Android Studio编译运行project报错:&&num;183&semi;&&num;183&semi;&&num;183&semi;&&num;183&semi;&&num;183&semi; finished with non-zero exit value 1

    错误代码: Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.android.ide.c ...

  3. BZOJ4293 &lbrack;PA2015&rsqb;Siano&lpar;线段树&rpar;

    传送门 这Seg确实不好写,不过因为它与ai的相对顺序无关,所以,我们在对ai排序之后,就可做了.维护一个区间最大值,维护一个和,维护一个区间赋值的懒标记,再维护一个时间变化的标记就可以了. 因为不论 ...

  4. 关于使用navigationController,前后2个视图控制器navigationBar隐藏属性不同,导致右滑手势失效问题的解决办法

    ###1.问题描述:如A是navigationController的rootViewController,在这个页面navigationBar是显示的(隐藏属性为NO),它push圧栈过来B视图控制器 ...

  5. Qt学习之路&lpar;34&rpar;&colon; 国际化&lpar;下&rpar;

      原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://devbean.blog.51cto.com/448512/245063 上次 ...

  6. C&num;解leetcode 18&period; 4Sum

    Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...

  7. Cognitive Radio Emergency Networks – Requirements and Design

    2005 IEEE 这是一个典型的Ad hoc场景.紧急情况下的临时自组网络.虽然之前的论文中把它标记为out-of-band global coverage,但这个也是分组的,每个组有个gatewa ...

  8. 在JSTL EL中处理java&period;util&period;Map,及嵌套List的情况

    关联的键查找存储在映射中的值. 在方括号中指定键,并将相应的值作为表达式的值返回.例如,表达式 ${map['key']} 返回与 map标识符所引用的 Map 中的 "key" ...

  9. &period;12-Vue源码之patch(2)

    快完事咯! 简单看了下patch函数,虽然不长,但是实际上很长很长,慢慢来吧, 首先来个总览: // line-5250 // oldVnode => 原生DOM节点 // vnode =&gt ...

  10. inpu控件接受pipe的处理结果

    input控件绑定的变量,要接受用户的输入值,一般只要使用   [(ngModel)]  就可以. 但是,pipe处理结果如何反映到变量里去呢?不知道吧?嘿嘿 这样就可以了 :  <input ...