es6基础系列二:Number
es6中关于Number类型的变化,主要有以下几点
- Number.isInteger(新增,判断是否为整数)
- Number.EPSILON(新增,判断是否可忽略的误差)
- Number.MAX_SAFE_INTEGER(新增,可以在js中安全且精确地表示的最大整数)
- Number.MIN_SAFE_INTEGER(新增,可以在js中安全且精确地表示的最小整数)
- Number.isSafeInteger(新增,表示在js中安全整数范围内,即是在-(253 - 1) 到 (253 - 1)之间)
- Number.isNaN(全局方法isNaN移植到Number下)
- Number.isFinite(全局方法isFinite移植到Number下,检测一个数是否有限数,可以不在js安全整数范围)
- Number.parseInt(全局方法parseInt移植到Number下)
- Number.parseFloat(全局方法parseFloat移植到Number下)
Number.isInteger
新增方法,判断是否为整数
Number.isInteger(Infinity) // false
Number.isInteger(-Infinity) // false
Number.isInteger(NaN) // false
Number.isInteger(null) // false
Number.isInteger(0) // true
Number.isInteger(-10) // true
Number.isInteger(10.3) // false
Number.EPSILON
新增方法,判断是否可以忽略的误差
0.1 + 0.2 // 0.30000000000000004
0.1 + 0.2 === 0.3 // false
// 这其中的误差可以忽略,可以通过下面的函数来判断误差是否可以忽略
function withinErrorMargin (left, right) {
return Math.abs(left - right) < Number.EPSILON
}
withinErrorMargin(0.1 + 0.2, 0.3) // true
withinErrorMargin(0.2 + 0.2, 0.3) // false
Number.MAX_SAFE_INTEGER
新增方法,表示js可以安全和精确表示的最大整数,也就是[IEEE-754](https://en.wikipedia.org/wiki/IEEE_floating_point)定义的(253 - 1)
Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1 // true
Number.MAX_SAFE_INTEGER === 9007199254740991 // true
Number.MIN_SAFE_INTEGER
新增方法,表示js可以安全和精确表示的最小整数,也就是[IEEE-754](https://en.wikipedia.org/wiki/IEEE_floating_point)定义的-(253 - 1)
Number.MIN_SAFE_INTEGER === -Number.MAX_SAFE_INTEGER // true
Number.MIN_SAFE_INTEGER === -9007199254740991 // true
Number.isSafeInteger
新增方法,返回true或false,表示在js可以安全和精确表示的范围内,也就是[IEEE-754](https://en.wikipedia.org/wiki/IEEE_floating_point)定义的-(253 - 1)到(253 - 1),所谓安全就是如果超出这范围,计算的结果就很可能不正确。
Number.isSafeInteger('a') // false
Number.isSafeInteger(null) // false
Number.isSafeInteger(NaN) // false
Number.isSafeInteger(Infinity) // false
Number.isSafeInteger(-Infinity) // false
Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1) // false
Number.isSafeInteger(Number.MIN_SAFE_INTEGER) // true
Number.isSafeInteger(1) // true
Number.isSafeInteger(1.2) // false
Number.isSafeInteger(Number.MAX_SAFE_INTEGER) // true
Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1) // false
9007199254740993 - 9007199254740995 // -4 但真实结果应该为-2
Number.isNaN
类似es5的isNaN,判断是否NaN,返回true或false,但值为非数字时,跟es5的isNaN有区别,isNaN会先执行一次Number方法
Number.isNaN(123) // false, integers are not NaN
Number.isNaN(Infinity) // false, Infinity is not NaN
Number.isNaN(NaN) // true, NaN is NaN
Number.isNaN('pony'/'foo') // true, 'pony'/'foo' is NaN, NaN is NaN
Number.isNaN('ponyfoo') // false, 'ponyfoo' is not NaN
isNaN('ponyfoo') // true, because Number('ponyfoo') is NaN
Number.isFinite
类似es5的isFinite,判断是否有限数,返回true或false,但值为非数字时,跟es5的isNaN有区别,isFinite会先执行一次Number方法
Number.isFinite(NaN) // false
Number.isFinite(Infinity) // false
Number.isFinite(-Infinity) // false
Number.isFinite(null) // false
Number.isFinite(0) // true
Number.isFinite(3) // true
Number.isFinite('10') // false
Number.isFinite(Math.pow(2,53)+5) // true 大于js的安全整数
isFinite(null) // true, because Number(null) is 0
isFinite('10') // true, because Number('10') is 10
Number.parseInt
跟es5的parseInt完全一样,不再介绍
Number.parseInt === parseInt // true
Number.parseFloat
跟es5的parseFloat完全一样,不再介绍
Number.parseFloat === parseFloat // true
es6基础系列二:Number的更多相关文章
- 【C++自我精讲】基础系列二 const
[C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...
- 从零开始学 Web 之 ES6(四)ES6基础语法二
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- Java基础系列二:Java泛型
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.泛型概述 1.定 ...
- ES6基础(二)
一.ES6字符串扩展 字符串模板 在传统的JavaScript语言中,输出模板通常是这样写的. 上面这种写法繁琐不方便,于是ES6中引入了字符串模板解决这个问题. 用反引号(`)标识.他可以当做普通字 ...
- 你所不知道的ASP.NET Core MVC/WebApi基础系列 (二)
转自博客:https://www.cnblogs.com/CreateMyself/p/10604293.html 前言 本节内容,我们来讲讲.NET Core当中的模型绑定系统.模型绑定原理.自定义 ...
- ES6入门系列二(数值的扩展)
ES6 在 Number对象上新增了很多方法 1 . Number.isFinite()判断是否为有限的数字 和全局的isFinite() 方法的区别是 isFinite('1') === tr ...
- es6基础系列五--数组的拓展
Array.from() 用于将两类对象转为真正的数组,类似数组对象和可遍历对象(包括数据结构Set和Map)转化为数组 格式:Array.from(arrayLike[, mapFn[, thisA ...
- es6基础系列四--字符串的拓展
1 for...of 字符串的遍历接口 for(let i of "abc"){ console.log(i); } // a // b // c 2 includes 是否包含某 ...
- es6基础系列三:解构赋值
解构就是ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值(只能用于数组,对象或迭代器).如果解构不成功,则等于undefined,但不能赋值为undefined和null,因为undefi ...
随机推荐
- html5 离线存储 地理信息与本地存储
搭建离线应用程序 ①服务器设置头信息 : AddType text/cache-manifest .manifest ② html标签加 : manifest=“xxxxx.manifest” ③写m ...
- Flex 布局教程
今天给大家分享一下flex布局的语法 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于 ...
- 调用android方法,出现版本太低解决方法
原因如下图所示: 调用需要API级别11,当前是8. 解决方法如下图所示: 点击
- 10条建议让你创建更好的jQuery插件
在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了.使 ...
- 《深入理解Java虚拟机》学习笔记之最后总结
编译器 Java是编译型语言,按照编译的时期不同,编译器可分为: 前端编译器:其实叫编译器的前端更合适些,它把*.java文件转变成*.class文件,如Sun的Javac.Eclipse JDT中的 ...
- 《深入理解Java虚拟机》学习笔记之字节码执行引擎
Java虚拟机的执行引擎不管是解释执行还是编译执行,根据概念模型都具有统一的外观:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果. 运行时栈帧结构 栈帧(Stack Frame) ...
- mac环境,搭建python+selenium遇到的问题
安装过程: 1.下载安装pip,下载并且解压文件(默认路径即可),打开终端,执行sudo python setup.py install,系统自带python,也可以不安装 2.执行 sudo eas ...
- sql查询表说明
一条神奇的sql语句 可以查询到数据库表的说明信息.如下:希望可以帮到大家 SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说 ...
- AR入门系列-07-Vuforia柱形体识别
今天为大家带来Vuforia柱形体识别的使用教程 首先我们要进入Vuforia官网在TargetManager中添加Target,这次我们添加的类型为Cylinder圆柱 Bottom Diamete ...
- Maven settings.xml配置解读
本文对${maven.home}\conf\settings.xml的官方文档作个简单的解读,请确保自己的maven环境安装成功,具体安装流程详见Maven安装 第一步:看settings.xml的内 ...