ES6躬行记(8)——数字
一、进制
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)——数字的更多相关文章
- ES6躬行记(1)——let和const
古语云:“纸上得来终觉浅,绝知此事要躬行”.的确,不管看了多少本书,如果自己不实践,那么就很难领会其中的精髓.自己研读过许多ES6相关的书籍和资料,平时工作中也会用到,但在用到时经常需要上搜索引擎中查 ...
- ES6躬行记 笔记
ES6躬行记(18)--迭代器 要实现以下接口## next() ,return,throw 可以用for-of保证迭代对象的正确性 例如 var str = "向
- ES6躬行记(13)——类型化数组
类型化数组(Typed Array)是一种处理二进制数据的特殊数组,它可像C语言那样直接操纵字节,不过得先用ArrayBuffer对象创建数组缓冲区(Array Buffer),再映射到指定格式的视图 ...
- ES6躬行记(4)——模板字面量
模板字面量(Template Literal)是一种能够嵌入表达式的格式化字符串,有别于普通字符串,它使用反引号(`)包裹字符序列,而不是双引号或单引号.模板字面量包含特定形式的占位符(${expre ...
- ES6躬行记(21)——类的继承
ES6的继承依然是基于原型的继承,但语法更为简洁清晰.通过一个extends关键字,就能描述两个类之间的继承关系(如下代码所示),在此关键字之前的Man是子类(即派生类),而在其之后的People是父 ...
- ES6躬行记(19)——生成器
根据ES6制订的标准自定义迭代器实现起来比较复杂,因此ES6又引入了生成器的概念,生成器(Generator)是一个能直接创建并返回迭代器的特殊函数,可将其赋给可迭代对象的Symbol.iterato ...
- ES6躬行记(16)——Set
ES6引入了两种新的数据结构:Set和Map.Set是一组值的集合,其中值不能重复:Map(也叫字典)是一组键值对的集合,其中键不能重复.Set和Map都由哈希表(Hash Table)实现,并可按添 ...
- ES6躬行记(12)——数组
ES6为数组添加了多个新方法,既对它的功能进行了强化,也消除了容易产生歧义的语法. 一.静态方法 1)of() ES6为Array对象新增的第一个静态方法是of(),用于创建数组,它能接收任意个参数, ...
- ES6躬行记(3)——解构
解构(destructuring)是一种赋值语法,可从数组中提取元素或从对象中提取属性,将其值赋给对应的变量或另一个对象的属性.解构地目的是简化提取数据的过程,增强代码的可读性.有两种解构语法,分别是 ...
随机推荐
- rn下的弹性布局
重点: 1]react native 下的弹性布局名字叫:flexDirection 2]flexDirection的默认值是column而不是row,而flex也只能指定一个数字值. 3]使用fle ...
- WebApi零碎总结
1.如果Content-Type是application/json,而POST和PUT的参数是[FromBody] string value,那么如果curl -d的值是'{"Name&qu ...
- Vim常用的命令
Noted:均在命令模式下进行的 移动: j---->向下 k---->向上 l---->向右 h---->向左 保存: w---->保存 退出: q---->退出 ...
- Javaweb 编解码流程
参考: https://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/#N10263 https://www.cnblogs.com/ch ...
- Python3.* 和Python2.*的区别
许多Python初学者都会问:我应该学习哪个版本的Python.对于这个问题,我的回答通常是“先选择一个最适合你的Python教程,教程中使用哪个版本的Python,你就用那个版本.等学得差不多了,再 ...
- LeetCode刷题:第一题 两数之和
从今天开始刷LeetCode 第一题:两数之和 题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种 ...
- mybatis 中的缓冲
package com.oaec.mybatis.test; import com.oaec.mybatis.dao.StudentDao;import com.oaec.mybatis.entity ...
- Centos6.5---samba文件共享服务配置(二)
Linux-----samba服务配置(二) 需求: 某公司销售部门提出一个文件共享需求,要求部门共享目录有三个,第一个共享目录所有销售部门人员都具有可读可写权限:第二个共享目录所有销售人员只读权限, ...
- JVM运行时数据区(二)
4.本地方法栈 本地方法栈与虚拟机栈所发挥的作用是非常相似的,它们之间的区别不过是虚拟机栈为虚拟机执行Java方法服务,而本地方法栈则为虚拟机使用到的Native方法服务. 与Java虚拟机栈一样本地 ...
- Dubbo 源码分析 - 自适应拓展原理
1.原理 我在上一篇文章中分析了 Dubbo 的 SPI 机制,Dubbo SPI 是 Dubbo 框架的核心.Dubbo 中的很多拓展都是通过 SPI 机制进行加载的,比如 Protocol.Clu ...