zoukankan      html  css  js  c++  java
  • ES6入门系列二(数值的扩展)

    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() 方法返回结果

      

      

  • 相关阅读:
    重视个人成长 远离心灵鸡汤——由一则“心灵鸡汤”想到的
    vim 学习
    针对不同包之间的action跳转,怎么配置?
    Bootstrap 栅格系统
    struts2的s:iterator 标签 详解
    struts2 <s:property/>标签的使用--输出时间格式转换
    Myeclipse中把java代码导成UML类图
    大学毕业后坚持学习有什么用
    【BZOJ2754】喵星球上的点名(AC自动机)
    Codeforces Round #466 (Div. 2)
  • 原文地址:https://www.cnblogs.com/LHLVS/p/10920069.html
Copyright © 2011-2022 走看看