zoukankan      html  css  js  c++  java
  • 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);        //28

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

    Math.sign(2);         //1
    Math.sign(-2);        //-1
    Math.sign(0);         //0
    Math.sign(-0);        //-0
    Math.sign(NaN);       //NaN
  • 相关阅读:
    Newtonsoft.Json 把对象转换成json字符串
    分页总页数计算方法 所有分页通用
    好用的Markdown编辑器一览 readme.md 编辑查看
    jquery bootgrid 一个很好的 数据控件,可用于任何语言
    史上最详细“截图”搭建Hexo博客——For Windows
    史上最详细“截图”搭建Hexo博客并部署到Github
    正则表达式30分钟入门教程
    [前端插件]为自己的博客增加打赏功能
    css浮动
    MetaWeblog API调用
  • 原文地址:https://www.cnblogs.com/strick/p/10174202.html
Copyright © 2011-2022 走看看