ES6 在 Number对象上新增了很多方法

1 .    Number.isFinite()判断是否为有限的数字

  和全局的isFinite() 方法的区别是

  isFinite('1') === true    ;    Number.isFinite('1') === false

  全局的isFinite()先调用Number() 方法  把  变量 转化为数字再进行判断, 所以返回 true,

  Number.isFinite()只能判断数字, 对于非数字一律返回false

2  ,  Number.isNaN() 判断是否为NAN,

  只有NaN 才返回true, 否则返回false

3 , ES6 把全局的parseInt()和parseFloat()   移植到了Number对象上,但行为保持不变,

 是为了逐步减少全局方法, 使语言逐渐模块化

4  , Number.isInterger()判断是否为整数,  注意一点,javascript内部整数和浮点数是同样的存储方法  

    所以Number.isInteger(2) === Number.isInteger(2.0)

5,  Number.EPSILON是一个极小常量, 一般来说, 差值小于这个极小常量的两个数我们就认为是相等的

  因为JavaScript浮点数的计算不精确,0.1+ 0.2 = 0.30000000000000004

  如果 Math.abs(0.1+ 0.2 - 0.3)  < Number.EPSILON 我们就认为 0.1+ 0.2 =  0.3

6 ,  Number.isSafeInteger()

  我们知道JavaScript表示整数的精度范围在-2的53次方到2的53次方之间,

  超过这个范围的整数JavaScript就无法精确表示了,比如

  Math.pow(2, 53) + 1 ===  Math.pow(2 ,53)    / true

  ES6引入了两个数来表示这个范围

  Number.MAX_SAFE_INTEGER = Math.pow(2, 53)  - 1;

  Number.MIN_SAFE_INTEGER = Math.pow(2, 53)  + 1;

  判断一个整数是否落在这个区域就可以用 Number.isSafeInteger()  ,

  它只能传整数进去, 不是整数一律返回false

  

7 , 基于6 我们知道JavaScript无法准确的表示大于2的53次方的整数,

  由此ES6新增了一个bigint的数据类型, 数值后面加n 来区分数字

  typeof 1234n  ===  'bigint'

  当计算Math.pow(2, 53) + 1 的时候

  9007199254740992 + 1 = 9007199254740992 (不精确)

  9007199254740992n + 1n = 9007199254740993n  (精确)

  在调用toString() 方法返回结果

  

  

ES6入门系列二(数值的扩展)的更多相关文章

  1. Maven入门系列(二)--设置中央仓库的方法

    原文地址:http://www.codeweblog.com/maven入门系列-二-设置中央仓库的方法/ Maven仓库放在我的文档里好吗?当然不好,重装一次电脑,意味着一切jar都要重新下载和发布 ...

  2. mybatis入门系列二之输入与输出参数

    mybatis入门系列二之详解输入与输出参数   基础知识   mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回 ...

  3. C语言高速入门系列(二)

    C语言高速入门系列(二) -----转载请注明出处coder-pig 本节引言: 在前面一节中我们对C语言进行了初步的了解,学会了使用IDE进行代码的编写,编译执行! 在这一节中我们会对C语言的基本的 ...

  4. C# 互操作性入门系列(二):使用平台调用调用Win32 函数

    好文章搬用工模式启动ing ..... { 文章中已经包含了原文链接 就不再次粘贴了 言明 改文章是一个系列,但只收录了2篇,原因是 够用了 } --------------------------- ...

  5. [转]C# 互操作性入门系列(二):使用平台调用调用Win32 函数

    传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 ...

  6. RabbitMQ 入门系列:8、扩展内容:接收信息时:可否根据RoutingKey过滤监听信息,答案是不能。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  7. RabbitMQ 入门系列:9、扩展内容:死信队列:真不适合当延时队列。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  8. RabbitMQ 入门系列:10、扩展内容:延时队列:延时队列插件及其有限的适用场景(系列大结局)。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  9. ES6 入门系列 - 函数的扩展

    1函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log( ...

随机推荐

  1. 从模版生成 uri Golang 的 html/template 包不太适合于这种情况

    模板 - Go/Golang 框架 Echo 文档 http://go-echo.org/guide/templates/ Templates | Echo - High performance, m ...

  2. UniGui的信息弹出框MessageDlg自定义标题的方法(使用JS动态本地化文本)

    UniGui的信息弹出框MessageDlg的原型定义如下: procedure MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons ...

  3. ORACLE 表空间扩展

    最近公司在对即将上线的系统做数据迁移和压力测试,于是乎需要和 Oracle 经常的打交道.今天正好碰到了表空间的问题,记录下来以后备用.也是最近才学习到的,原来 Oracle 表空间也是有大小限制的, ...

  4. NOIP2010_T4_引水入城 bfs+贪心

    在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 N 行 M 列的矩形,如上图所示,其中每个格子都代表一座城 市,每座城市都有一个海拔高度.为了使 ...

  5. loj#2340. 「WC2018」州区划分

    FWT&&FMT板子 #include<cstdio> #include<iostream> #include<cstring> #include& ...

  6. python学习笔记:第四天( 字符串)

    Python3 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字 ...

  7. dhclient命令

    语法:dhclient(选项)(参数) 选项0:指定dhcp客户但监听的端口号-d:总是以前台方式运行程序-q:安静模式,不打印任何错误的提示信息-r:释放ip地址 参数:网络接口:操作的网络接口 示 ...

  8. C# 多线程控制 通讯 和切换

    一.多线程的概念  Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程.什么是进程呢?当一个程序开始运行时,它就是一 ...

  9. Notepad++安装xml插件

    环境: win7 64位 Notepad++7.3.3 原生的Notepad++不自带xml文件的插件,所以在显示xml文件时并不分行(如下图所示),对于用户编辑,查看的操作而言,并不友好,所以需要安 ...

  10. kafka之六:为什么Kafka那么快

    转自:  http://mp.weixin.qq.com/s?__biz=MzIxMjAzMDA1MQ==&mid=2648945468&idx=1&sn=b622788361 ...