• ES6 数值的拓展笔记


    1.二进制和八进制表示法

      ES6提供了二进制和八进制数值的新写法,分别用前缀0b(或0B)  和 0O(或oO)表示。

      如果要将0b和0O的前缀字符串数值转为十进制,要使用Number方法。

    2.Number.isFinite(),Number.isNaN()

      Number.isFinite()用来检查一个数值是否为有限的,既不是Infinity。如果参数类型不是数值,一律返回false。

      Number.isNaN()  用来检查一个值是否为NaN

      与传统的全局方法isFinite()和isNaN()区别在于:

        传统方法先调用Number()  将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效

    isFinite(25) // true
    isFinite("25") // true
    Number.isFinite(25) // true
    Number.isFinite("25") // false
    
    isNaN(NaN) // true
    isNaN("NaN") // true
    Number.isNaN(NaN) // true
    Number.isNaN("NaN") // false
    Number.isNaN(1) // false

    3.Number.parseInt(),Number.parseFloat()

      es6将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为保持不变

    4. Number.isInteger()

      用来判断一个数值是否为整数。如果对于数据精度要求较高,不建议使用Number.isInteger()判断一个数值是否为整数。

    5.Number.EPSILON

      es6在Number对象上面,新增一个极小的常量Number.EPSILON。根据规格,它表示1与大于1的最小浮点数之间的差。

      对于64为浮点数来说,大于1的最小浮点数相当于二进制的1.00..001,小数点后面连续51个零。这个值减去1之后,就等于2的-52次方。

       Number.EPSILON可以用来设置“能够接受的误差范围”。

    6.安全整数和Number.isSafeInteger()

      JavaScript 能够准确表示的整数范围在-2^532^53之间(不含两个端点),超过这个范围,无法精确表示这个值。

       ES6 引入了Number.MAX_SAFE_INTEGERNumber.MIN_SAFE_INTEGER这两个常量,用来表示这个范围的上下限。

       Number.isSafeInteger()则是用来判断一个整数是否落在这个范围之内

    7.Math对象的扩展

      Math.trunc() 方法用于去除一个数的小数部分,返回整数部分。对于非数值,Math.trunc内部使用Number方法将其转为数值。 对于空值和无法截取整数的值,返回NaN。

      Math.sign() 方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先转为数值。它会返回5种值。参数为正数,返回+1;参数为负数,返回-1;参数为0,返回0;参数为-0,返回-0;其他值,NaN。

      Math.cbrt() 方法用于计算一个数的立方根。对于非数值,该方法也是先用Number方法将其转为数值。

      Math.clz32() 方法将参数转为32位无符号整数的形式,然后这个32位值里面有多个前导0。

          clz32这个函数名来自“count leading zero bits in 32-bit binary repersentation of a number" (计算一个数的32位二进制形式的前导0的个数)的缩写。

          左移运算符(<<)与Math.clz32方法直接相关。

      Math.imul() 方法返回两个数以32位带符号整数形式相乘的结果,返回的也是一个32位的带符号整数。

      Math.fround() 方法返回一个数的32位单精度浮点数形式。主要作用是将64位双精度浮点数转为32位单精度浮点数。如果小数的精度超过24个二进制位,返回值就会不同于原值,否则返回值不变(即与64位双精度值一致)。

      Math.hypot() 方法返回所有参数的平方和的平方根。Math.hypot(3,4);3的平方加上4的平方,等于5的平方。

    es6新增4个对数方法

    (1)Math.expm1(x) 返回 e- 1,即Math.exp(x)-1

    (2)Math.log1p(x) 返回1+x的自然对数,即Math.log(1+x)。如果x小于-1,返回Null。

    (3)Math.log10(x) 返回以10为底的x的对数。如果x小于0,则返回NaN。

    (4)Math.log2(x) 返回以2为底的x的对数。如果x小于0,则返回NaN.

    es6新增了6个双曲函数方法

      -Math.sinh(x) 返回x的双曲正弦

      -Math.cosh(x) 返回x的双曲余弦

      -Math.tanh(x) 返回x的双曲正切

      -Math.asinh(x) 返回x的反双曲正弦

      -Math.acosh(x) 返回x的反双曲余弦

      -Math.atanh(x) 返回x的反双曲正切

    8.指数运算

      es2016新增了一个指数运算符(**) ,这个运算符的一个特点是右结合。多个指数运算符连用时,是从最右边开始计算的。如2**2 // 4        2**3 //8   2**3**2相当于2**(3**2)//512 首先计算的是第二个指数运算符**。

      指数运算符可以与等号结合,形成一个新的赋值运算符(**=)

    let a = 1.5;
    a**=2;
    // 等同于 a = a*a;
    
    let b = 4;
    b**=3;
    //等同于b=b*b*b;

    注意,V8 引擎的指数运算符与Math.pow的实现不相同,对于特别大的运算结果,两者会有细微的差异。

    Math.pow(99, 99)
    // 3.697296376497263e+197
    
    99 ** 99
    // 3.697296376497268e+197

     

  • 相关阅读:
    ADO中的多层次数据集,类似于dataset
    工作流的设计
    Socket bind系统调用简要分析
    linux Network Address Translation NAT 转载 还需要整理
    生活20190602
    磁盘空间满的问题
    linux netfilter nat 实现 转载
    Socket 套接字的系统调用
    linux 网络编程 基础
    学习linux,不要找别人了,我有东西要发
  • 原文地址:https://www.cnblogs.com/feng-xl/p/10405825.html
Copyright © 2020-2023  润新知