一、进制

  ES6不仅完善了数字的八进制形式,还补充了一种十六进制形式,并且添加了全新的二进制形式。下面的三个变量分别表示八进制、十六进制和二进制的10,注释中给出了该进制的另一种写法。

var octal = 0o12,      //或0O12
hex = 0xa,  //或0XA
binary = 0b1010; //或0B1010

  注意,只有十进制才能表示小数。

二、Number

  ES6不仅增强了Number对象处理数字的精度,还扩展了它的数字运算能力,新增的属性和方法如表2所示。

表2  Number的属性和方法

属性或方法 功能描述
EPSILON 一个常量,表示1和大于1的最小值之间的差值:2^-52
MAX_SAFE_INTEGER 一个常量,表示JavaScript的安全整数的上限值:2^53 - 1
MIN_SAFE_INTEGER 一个常量,表示JavaScript的安全整数的下限值:-(2^53 - 1)
isFinite() 判断一个数字是否是有限的,如果参数是NaN、Infinity、-Infinity或非数字,都将返回false
isNaN() 判断一个值是否是NaN,只有当参数是NaN时,才能返回true
isInteger() 判断一个数字是否为整数,注意,12和12.0都被视为整数
isSafeInteger() 判断一个数字是否为安全整数

  表中的安全整数是指处在MIN_SAFE_INTEGER和MAX_SAFE_INTEGER之间的整数。

  在全局对象中有两个全局函数也叫isFinite()和isNaN(),但它们会先将传入的参数转换成数字,再进行判断,而Number对象中的新方法却不会执行这步类型转换,因此新方法能得到更为准确的结果。下面会分别对新方法和全局函数传入相同的参数,从它们的结果可知,新方法得到了期望值,而全局函数并没有。

Number.isFinite(null);   //false
isFinite(null); //true Number.isNaN("abc"); //false
isNaN("abc");    //true

三、Math

  ES6为Math对象新增了6个三角函数、4个对数方法,以及多个算术方法,具体如表3所示。

表3  Math的方法

方法 功能描述
sinh()和asinh() sinh()用于双曲正弦;asinh()用于反双曲正弦
cosh()和acosh() cosh()用于双曲余弦;acosh()用于反双曲余弦
tanh()和atanh() tanh()用于双曲正切;atanh()用于反双曲正切
expm1() 等价于Math.exp(x) - 1,可计算e^x - 1,其中x表示参数
log2() 返回以2为底的对数,如果参数小于0,则返回NaN
log10() 返回以10为底的对数,如果参数小于0,则返回NaN
log1p() 等价于Math.log(x+1),返回一个数字加1后的自然对数,如果参数小于-1,则返回NaN
hypot() 先将所有参数的平方相加,再计算和的平方根
cbrt() 计算数字的立方根
clz32() 先将数字转换成32位无符号整数形式的二进制,再计算前导0的个数
trunc() 只取数字的整数部分
imul() 让两个数字的32位整数相乘
fround() 将数字转换为离它最近的单精度浮点数形式的数字
sign() 返回数字的符号,指明数字是正数、负数还是零

  clz32()方法的描述比较抽象,现在用一个例子来讲解,先将10转换成32位的二进制,得到1010(省略了前面的28个0),再调用clz32()方法,最终的结果为28。

Math.clz32(10);        //

  sign()方法有5种返回值,分别是1、-1、0、-0和NaN,代表正数、负数、正零、负零和NaN,具体如下所示。

Math.sign(2);         //
Math.sign(-2); //-1
Math.sign(0); //
Math.sign(-0); //-0
Math.sign(NaN); //NaN

ES6躬行记(8)——数字的更多相关文章

  1. ES6躬行记(1)——let和const

    古语云:“纸上得来终觉浅,绝知此事要躬行”.的确,不管看了多少本书,如果自己不实践,那么就很难领会其中的精髓.自己研读过许多ES6相关的书籍和资料,平时工作中也会用到,但在用到时经常需要上搜索引擎中查 ...

  2. ES6躬行记 笔记

    ES6躬行记(18)--迭代器 要实现以下接口## next() ,return,throw 可以用for-of保证迭代对象的正确性 例如 var str = "向

  3. ES6躬行记(13)——类型化数组

    类型化数组(Typed Array)是一种处理二进制数据的特殊数组,它可像C语言那样直接操纵字节,不过得先用ArrayBuffer对象创建数组缓冲区(Array Buffer),再映射到指定格式的视图 ...

  4. ES6躬行记(4)——模板字面量

    模板字面量(Template Literal)是一种能够嵌入表达式的格式化字符串,有别于普通字符串,它使用反引号(`)包裹字符序列,而不是双引号或单引号.模板字面量包含特定形式的占位符(${expre ...

  5. ES6躬行记(21)——类的继承

    ES6的继承依然是基于原型的继承,但语法更为简洁清晰.通过一个extends关键字,就能描述两个类之间的继承关系(如下代码所示),在此关键字之前的Man是子类(即派生类),而在其之后的People是父 ...

  6. ES6躬行记(19)——生成器

    根据ES6制订的标准自定义迭代器实现起来比较复杂,因此ES6又引入了生成器的概念,生成器(Generator)是一个能直接创建并返回迭代器的特殊函数,可将其赋给可迭代对象的Symbol.iterato ...

  7. ES6躬行记(16)——Set

    ES6引入了两种新的数据结构:Set和Map.Set是一组值的集合,其中值不能重复:Map(也叫字典)是一组键值对的集合,其中键不能重复.Set和Map都由哈希表(Hash Table)实现,并可按添 ...

  8. ES6躬行记(12)——数组

    ES6为数组添加了多个新方法,既对它的功能进行了强化,也消除了容易产生歧义的语法. 一.静态方法 1)of() ES6为Array对象新增的第一个静态方法是of(),用于创建数组,它能接收任意个参数, ...

  9. ES6躬行记(3)——解构

    解构(destructuring)是一种赋值语法,可从数组中提取元素或从对象中提取属性,将其值赋给对应的变量或另一个对象的属性.解构地目的是简化提取数据的过程,增强代码的可读性.有两种解构语法,分别是 ...

随机推荐

  1. 每日一练ACM 2019.04.14

    2019.4.14 第1001题:Sum Problem Problem DescriptionHey, welcome to HDOJ(Hangzhou Dianzi University Onli ...

  2. python之支付

    一,alipay方式 1,国内的alipay支付:我在网上找了好多的教程,大多数都是属于国内内支付的,所以在这里我就不详细介绍了, 操作:https://www.cnblogs.com/xuanan/ ...

  3. WindowsPE权威指南 第二章 小工具 PEComp代码的C语言实现

    主程序代码 PEComp.c #include <windows.h> #include <Richedit.h> #include <Commctrl.h> #i ...

  4. 第44章:MongoDB-集群--Sharding(分片)--分片的片键选择

    ①片键选择的重要性 所谓片键,就是用来拆分数据的字段,通常为1-2个字段,由于片键一旦确定,并已经分片过后,基本上就不可能再修改片键了,因此初期设计和选择就非常重要了 ②片键规则 1:不可以是数组 2 ...

  5. IDEA的Database表的基本操作

    1.创建表 方法一:直接创建:右键-new-table 方法2: 参考别的表,直接用语句,右键-DDL and Sources- 然后直接在控制台修改 修改后直接运行,表就建好了 2.备份表 先用上面 ...

  6. PIL库图像处理

    PIL有如下几个模块 Image模块.ImageChops模块.ImageCrackCode模块 ImageDraw模块.ImageEnhance模块.ImageFile模块 ImageFileIO模 ...

  7. 恢复oracle数据从delete

    今天维护系统的时候没仔细看,误删了50行数据,然后想起来以前学过delete语句删除的数据是可以回复的,但是那个时候比较慌乱,也没有心情仔细看,反而是想到了一个歪招解决了问题,我有个良好的嗜好就是经常 ...

  8. Codeforces Round #418 (Div. 2)

    A: 不细心WA了好多次 题意:给你一个a序列,再给你个b序列,你需要用b序列中的数字去替换a序列中的0,如果能够替换,则需要判断a是否能构成一个非递增的序列,a,b中所有的数字不会重复 思路:就是一 ...

  9. 132.leecode-Palindrome Partitioning II

    这个题需要两个dp,一个保存从i到j是否为回文串 另一个保存0到i的最小的分割 下面是我的效率不太高的代码 class Solution { public: int minCut(string s) ...

  10. war和war exploded区别

    war和war exploded区别 在使用IDEA开发项目的时候,部署Tomcat的时候通常会出现下边的情况: 是选择war还是war exploded 这里首先看一下他们两个的区别: war模式: ...