参考书《ECMAScript 6入门》
http://es6.ruanyifeng.com/

数值的扩展

1.Number对象的扩展
(1)javascript的全局函数isNaN,isFinite,parseInt,parseFloat转为Number对象的函数

a. isNaN 与 Number.isNaN

相同点:都是用来判断数值是否是NaN
     不同点:对于非数值的参数,isNaN会先用Number转化参数为数值类型,如果是NaN则返回true,如果不是,返回false;
                   而Number.isNaN,对于非数值的参数,一律返回false;
     Number.isNaN('NaN') //false 非数值一律返回false
     Number.isNaN(NaN)  //true
     isNaN('NaN') //true 非数值先转化成数值,然后再判断是否为NaN
     isNaN(NaN)  //true

b. isFinite 与 Number.isFinite

相同点:都用来判断数值是否有限
    不同点:对于非数值的参数,isFinite会先用Number转化参数为数值类型,如果是有限的则返回true,如果不是,返回false;
            而Number.isFinite,对于非数值的参数,一律返回false;
    isFinite(1) //true
    isFinite('1') //true 非数值先转换成数值,然后再判断是否有限
    Number.isFinite(1) //true
    Number.isFinite('1')//false 非数值一律返回false

c. parseInt 与 Number.parseInt 行为完全相同,parseFloat与Number.parseFloat 行为完全相同

(2)Number.isInteger 判断一个数值是否为整数
   Number.isInteger(1)    //true
   Number.isInteger(1.0) //true
   Number.isInteger(1.1)//false
   如果参数的数值太大,十进制数转化成二进制数超过了53位,则不能保证准确性

(3)Number.EPSLION 常量(js能够表示的最小精度值 = 比1大的最小浮点数 - 1 = Math.pow(2,-52))
   可用来做误差判断,如果计算结果小于这个误差,可以认为是无误差

(4)安全整数与Number.isSafeInteger
   js 安全整数范围在-Math.pow(2,53)到 Math.pow(2,53)之间,超过这个范围就不准确了
   Number.MAX_SAFE_INTEGER = 9007199254740991 = Math.pow(2,53) - 1
   Number.MIN_SAFE_INTEGER = -9007199254740991 = - Math.pow(2,53) + 1 = - Number.MAX_SAFE_INTEGER
   Number.isSafeInteger函数用来判断参数是否在此范围内
   Number.isSafeInteger(Number.MAX_SAFE_INTEGER) //true
   Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1) //false
   Number.isSafeInteger(Number.MIN_SAFE_INTEGER) //true
   Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1) //false
   当Number.isSafeInteger是用来验证运算结果是否落在安全整数的范围内,不要只验证运算结果,而要同时验证参与运算的每个值,这样更准确

2.扩展的Math对象
  Math.trunc() : 用于取得一个数的整数部分。如果参数是非数值,则先将参数转换成数值,再取整数部分,若是无法转化成数值的参数,则返回NaN
  Math.trunc(1.23)//1
  Math.trunc(1.78)//1
  Math.trunc('')//0
  Math.trunc(null)//0
  Math.trunc('null')//NaN
  Math.trunc(NaN)//NaN
  Math.trunc('NaN')//NaN
  Math.trunc(true)//1
  Math.trunc('true')//NaN
  Math.sign():用于返回一个数的符号为,若为正,则返回+1;若为负,则返回-1;若为0,则返回0;-0-->-0  +0--->+0;其他值返回NaN
  Math.sign(123)//+1
  Math.sign(-0.56)//-1
  Math.sign(true)//+1
  Math.sign(false) //+1
  Math.sign(null) //0
  参数为非数值时,会先转化成数值,再返回符号
  Math.sign('')//0
  Math.sign(true)//+1
  Math.sign(false) //+1
  Math.sign(null) //0
  参数为非数值时,会先转化成数值,再返回符号,若无法转化成数值,则返回NaN
  Math.sign('true')   //NaN
  Math.sign('false') //NaN
  Math.sign('null') //NaN

Math.fround() : 用于返回一个数的32位单精度浮点数形式
  Math.log10(X) : 返回以10为底的x的对数 X>0
  Math.log2(X)  :返回以2为底的x的对数  X>0

Math.hypot()  : 返回所有参数的平方和的平方根
  Math.hypot(3,4) // 5

Math.sinh()//双曲正弦
  Math.cosh()//双曲余弦
  Math.tanh()//双曲正切
  Math.asinh()//双曲反正弦
  Math.acosh()//双曲反余弦
  Math.atanh()//双曲反正切

Math.imul() //返回两个整数相乘的结果(参数是32位的整数,结果也是32位的整数)

Math.clz32() //返回一个32位的整数有多少个前导0(不包含符号位)
  1 == 00000000000000000000000000000001 // true
  Math.clz32(1)//31
  Math.clz32(00000000000000000000000000000001)//31

Math.cbrt() //返回参数的立方根
  Math.cbrt(27) //3
  Math.cbrt(8) //2

Math.log1p(x)//返回1+x的自然对数 Math.log1p(x) === Math.log(1+x)   X>-1
  Math.expm1(X)//e^x -1

ES6学习笔记(5)----数值的扩展的更多相关文章

  1. ES6学习笔记(三)——数值的扩展

    看到这条条目录有没有感觉很枯燥,觉得自己的工作中还用不到它所以实在没有耐心看下去,我也是最近得闲,逼自己静下心来去学习去总结,只有在别人浮躁的时候你能静下心来去学去看去总结,你才能进步.毕竟作为前端不 ...

  2. es6学习笔记--字符串&数值&数组&函数&对象的扩展

    这几天抽空学习了es6语法,关于字符串,数值,数组,函数以及对象的扩展,看到es6标准入门这本书,里面讲的扩展特别多,我认为有几部分在项目上用不到,就挑有用的当笔记学习了. 字符串的扩展 str.in ...

  3. es6学习笔记9--函数的扩展

    函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,为了避免这个问题,通常需要先判断一下参数y是否被赋值,如果没有,再等于默认值. ES6允许为函数的参数设置默认值,即直接写在参 ...

  4. ES6 学习笔记之四 对象的扩展

    ES6 为对象字面量添加了几个实用的功能,虽然这几个新功能基本上都是语法糖,但确实方便. 一.属性的简洁表示法 当定义一个对象时,允许直接写入一个变量,作为对象的属性,变量名就是属性名. 例1: , ...

  5. ES6学习笔记(一)——扩展运算符和解构赋值

    前言 随着前端工程化的快速推进,在项目中使用ES6甚至更高的ES7等最近特性早已不是什么新鲜事.之前还觉得既然浏览器支持有限,那了解一下能看懂就好,然而仅仅了解还是不够的,现在放眼望去,那些成熟框架的 ...

  6. ES6学习笔记二:各种扩展

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7242967.html 一:字符串扩展 1:字符串遍历器 for (let char of str) { // ...

  7. ES6学习笔记(8)----对象的扩展

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 对象的扩展 1.属性名的简洁表示法 : ES6允许在代码中直接写变量,变量名是属性名,变量值是属 ...

  8. Es6学习笔记(7)----数组的扩展

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 数组的扩展 1.扩展运算符:可以将数组转化成逗号隔离的单个参数...[1,2,3] //控制台运 ...

  9. ES6学习笔记(6)----函数的扩展

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ 函数的扩展 函数的默认值 : ES6可以为函数指定默认值 (1)指定默认值的两种方式 a.函数参 ...

随机推荐

  1. Oracle安装:silent安装方式

    之前一直是通过图形界面来安装oracle,这次上机考试说用silent (静默)形式安装.一点头绪都没有,虽然当时提供了oracle官方文档. 遂查找资料,安装了一下: 一.准备工作: 1.系统参数调 ...

  2. mysql 5.5升级到5.7版本操作流程

    一.备份原来 phpStudy 中 MySQL 安装目录 二.把下载的 MySQL 压缩文件解压至 phpStudy 下的 MySQL目录,复制 my-default.ini ,重命名为 my.ini ...

  3. Opencv+Zbar二维码识别(标准条形码/二维码识别)

    使用Opencv+Zbar组合可以很容易的识别图片中的二维码,特别是标准的二维码,这里标准指的是二维码成像清晰,图片中二维码的空间占比在40%~100%之间,这样标准的图片,Zbar识别起来很容易,不 ...

  4. Educational Codeforces Round 24 CF 818 A-G 补题

    6月快要结束了 期末也过去大半了 马上就是大三狗了 取消了小学期后20周的学期真心长, 看着各种北方的学校都放假嗨皮了,我们这个在北回归线的学校,还在忍受酷暑. 过年的时候下定决心要拿块ACM的牌子, ...

  5. E20180405-hm

    tutorial  n. 个别辅导时间; 教程,辅导材料; 使用说明书; 辅导课;  adj. 导师的; 私人教师的; 辅导的; track n. 小路,小道; 痕迹,踪迹; 轨道,音轨; 方针,路线 ...

  6. lightoj 1031【区间DP,未完待续】

    题意: 给你一个n,再给你n个数,每个数<1e4; 有两个player交替取数字,每个人每一次能拿一个或多个,交替在两边拿. 游戏终止在所有的数字被取完. 两个人的分数就是所取得的数字大小总和. ...

  7. P5166 xtq的口令

    传送门 这题要是搞懂在干什么其实不难(虽然某个花了几个小时才搞明白的家伙似乎没资格这么说--) 假设所有人都没有听到老师的命令,我们从左到右考虑,对于当前的人,如果它没有观察者,那么肯定要让它听到老师 ...

  8. 51NOD 1134 最长上升子序列

    给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10.   输入 第1行:1个数N, ...

  9. Apache Zeppelin是什么?

    Apache Zeppelin提供了web版的类似ipython的notebook,用于做数据分析和可视化.背后可以接入不同的数据处理引擎,包括spark, hive, tajo等,原生支持scala ...

  10. 最短路之Dijkstra(迪杰斯特拉)

    一般用法: Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法是很有代 ...