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

     

  • 相关阅读:
    Blank page instead of the SharePoint Central Administration site
    BizTalk 2010 BAM Configure
    Use ODBA with Visio 2007
    Handling SOAP Exceptions in BizTalk Orchestrations
    BizTalk与WebMethods之间的EDI交换
    Append messages in BizTalk
    FTP protocol commands
    Using Dynamic Maps in BizTalk(From CodeProject)
    Synchronous To Asynchronous Flows Without An Orchestration的简单实现
    WSE3 and "Action for ultimate recipient is required but not present in the message."
  • 原文地址:https://www.cnblogs.com/feng-xl/p/10405825.html
Copyright © 2011-2022 走看看