zoukankan      html  css  js  c++  java
  • Number API

     (1)Number.isFinite() & Number.isNaN()——ES6

    ①Number.isfinite()用来检查一个数值是否为有限的(infinite),即不是Infinity

    1 console.log(Number.isFinite(12));  // true
    2 console.log(Number.isFinite(NaN));  // false
    3 console.log(Number.isFinite(Infinity));  // false
    4 console.log(Number.isFinite("abc"));  // false

    注意:如果参数类型不是数值,一律返回false

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

    1 Number.isNaN(NaN) // true
    2 Number.isNaN(15) // false
    3 Number.isNaN('15') // false
    4 Number.isNaN(true) // false
    5 Number.isNaN(9/NaN) // true
    6 Number.isNaN('true' / 0) // true
    7 Number.isNaN('true' / 'true') // true

    注意:如果参数类型不是NaN,Number.isNaN一律返回false

    这里还有需要注意的是Number.isNaN()和Number.isFinite()与传统的isNaN()和isFinite()的区别:

    比如:

    Number.isNaN("a")  // false
    isNaN("a")  // true

    说明

    • 传统方法发先调用Number()将非数值的值转为数值,再进行判断
    • 而这两个方法只对数值有效
     1 isFinite(25) // true
     2 isFinite("25") // true
     3 Number.isFinite(25) // true
     4 Number.isFinite("25") // false
     5 
     6 isNaN(NaN) // true
     7 isNaN("NaN") // true
     8 Number.isNaN(NaN) // true
     9 Number.isNaN("NaN") // false
    10 Number.isNaN(1) // false

    (2)Number.isInteger() & Number.isSafeInteger()

    ①Number.isInteger()用来判断一个数值是否为整数

    1 console.log(Number.isInteger(12));  // true
    2 console.log(Number.isInteger(12.12));  // false

     注意 :NaN 和正负 Infinity 不是整数。

    ②Number.isSafeInteger() 方法用来判断传入的参数值是否是一个“安全整数”(safe integer)。

    一个安全整数是一个符合下面条件的整数:

    • 可以准确地表示为一个IEEE-754双精度数字,
    • 其IEEE-754表示不能是舍入任何其他整数以适应IEEE-754表示的结果。.

    (3)Number.parseFloat()——ES6

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

    Number.parseFloat() 方法可以把一个字符串解析成浮点数。该方法与全局的 parseFloat() 函数相同,并且处于 ECMAScript 6 规范中(用于全局变量的模块化)

    parseFloat(3.14);
    parseFloat('3.14');
    parseFloat('  3.14  ');
    parseFloat('314e-2');
    parseFloat('0.0314E+2');
    parseFloat('3.14some non-digit characters');
    parseFloat({ toString: function() { return "3.14" } }); 

    说明:

    • 如果 parseFloat 在解析过程中遇到了正号(+)、负号(- U+002D HYPHEN-MINUS)、数字(0-9)、小数点(.)、或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数。

    (4)Number.parseInt()——ES6

    这个方法和全局的 parseInt() 函数具有一样的函数功能

    parseInt(stringradix)   解析一个字符串并返回指定基数的十进制整数

    • string:要被解析的值。如果参数不是一个字符串,则将其转换为字符串(使用  ToString 抽象操作)。字符串开头的空白符将会被忽略。
    • radix:(可选)从 2 到 36,表示字符串的基数。例如指定 16 表示被解析值是十六进制数。请注意,10不是默认值!

    说明:

    • parseInt函数将其第一个参数转换为一个字符串,对该字符串进行解析,然后返回一个整数或 NaN
    • 如果不是NaN,返回值将是以第一个参数作为指定基数 radix 的转换后的十进制整数。(例如,radix10,就是可以转换十进制数,为8可以转换八进制数"07",16可以转换十六进制数"0xff",以此类推)。
    • 对于 radix 10以上的,英文字母表示大于9的数字。例如,对于十六进制数(基数16),则使用 A 到 F 。
    • 如果 parseInt 遇到的字符不是指定 radix 参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。 parseInt 将数字截断为整数值。 允许前导和尾随空格。
    • 由于某些数字在其字符串表示形式中使用e字符(例如 6.022×23 表示 6.022e23 ),因此当对非常大或非常小的数字使用数字时,使用 parseInt 截断数字将产生意外结果。 parseInt不应替代Math.floor()
    • parseInt 可以理解两个符号。+ 表示正数,- 表示负数(从ECMAScript 1开始)。它是在去掉空格后作为解析的初始步骤进行的。如果没有找到符号,算法将进入下一步;否则,它将删除符号,并对字符串的其余部分进行数字解析。
    • 如果 radix 是 undefined0或未指定的,JavaScript会假定以下情况:
      • 如果输入的 string以 "0x"或 "0x"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被当做十六进制数去解析。
      • 如果输入的 string以 "0"(0)开头,radix被假定为8(八进制)或10(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix
      • 如果输入的 string 以任何其他值开头, radix 是 10 (十进制)
    • 如果第一个字符不能转换为数字,parseInt会返回 NaN

    BigInt。警告: parseInt将 BigInt转换为Number,并在这个过程中失去了精度。这是因为拖尾的非数字值,包括 "n",会被丢弃。

    (5)Number.prototype.toExponential()

    toExponential(digits) 方法以指数表示法返回该数值字符串表示形式

    参数:

    • digits:可选,一个整数,用来指定小数点后有几位数字。默认情况下用尽可能多的位数来显示数字。

    返回值:

    • 一个用幂的形式 (科学记数法) 来表示Number 对象的字符串。小数点后以fractionDigits 提供的值来四舍五入。如果 fractionDigits 参数被忽略了,小数点后的将尽可能用最多的位数来表示该数值。
    • 对数值字面量使用 toExponential() 方法,且该数值没有小数点和指数时,应该在该数值与该方法之间隔开一个空格,以避免点号被解释为一个小数点。也可以使用两个点号调用该方法。
    • 如果一个数值的小数位数多余 fractionDigits 参数所提供的,则该数值将会在 fractionDigits 指定的小数位数处四舍五入。可以查看 toFixed() 方法描述中关于四舍五入的讨论,同样应用于 toExponential() 方法。

    异常:

    • RangeError:如果 fractionDigits 太小或太大将会抛出该错误。介于 0 和 20(包括20)之间的值不会引起 RangeError 。 执行环境也可以支持更大或更小范围。
    • TypeError:如果该方法在一个非数值类型对象上调用。
     1 var numObj = 77.1234;
     2 
     3 alert("numObj.toExponential() is " + numObj.toExponential()); //输出 7.71234e+1
     4 
     5 alert("numObj.toExponential(4) is " + numObj.toExponential(4)); //输出 7.7123e+1
     6 
     7 alert("numObj.toExponential(2) is " + numObj.toExponential(2)); //输出 7.71e+1
     8 
     9 alert("77.1234.toExponential() is " + 77.1234.toExponential()); //输出 7.71234e+1
    10 
    11 alert("77 .toExponential() is " + 77 .toExponential()); //输出 7.7e+1

    (6)Number.prototype.toFixed()

    toFixed(digits) 方法使用定点表示法来格式化一个数值。

    参数:

    • 小数点后数字的个数;介于 0 到 20 (包括)之间,实现环境可能支持更大范围。如果忽略该参数,则默认为 0。

    返回值:

    • 使用定点表示法表示给定数字的字符串。

    注意:浮点数不能精确地用二进制表示所有小数。这可能会导致意外的结果,例如 0.1 + 0.2 === 0.3 返回 false .

     1 var numObj = 12345.6789;
     2 
     3 numObj.toFixed();         // 返回 "12346":进行四舍六入五看情况,不包括小数部分
     4 numObj.toFixed(1);        // 返回 "12345.7":进行四舍六入五看情况
     5 
     6 numObj.toFixed(6);        // 返回 "12345.678900":用0填充
     7 
     8 (1.23e+20).toFixed(2);    // 返回 "123000000000000000000.00"
     9 
    10 (1.23e-10).toFixed(2);    // 返回 "0.00"
    11 
    12 2.34.toFixed(1);          // 返回 "2.3"
    13 
    14 2.35.toFixed(1)           // 返回 '2.4'. Note it rounds up
    15 
    16 2.55.toFixed(1)           // 返回 '2.5'. Note it rounds down - see warning above
    17 
    18 -2.34.toFixed(1);         // 返回 -2.3 (由于操作符优先级,负数不会返回字符串)
    19 
    20 (-2.34).toFixed(1);       // 返回 "-2.3" (若用括号提高优先级,则返回字符串)

    (7)Number.prototype.toPrecision()

    toPrecision() 方法以指定的精度返回该数值对象的字符串表示。

    (8)Number.prototype.toString()

    toString() 方法返回指定 Number 对象的字符串表示形式。

    (9)Number.prototype.valueOf()

    valueOf() 方法返回一个被 Number 对象包装的原始值。

  • 相关阅读:
    Python JSON的基本使用
    python socket函数详解
    python关于字符编码的基本操作
    关于git的一些简单命令
    CS和BS结构的优缺点
    Web测试详细点
    详解SESSION与COOKIE的区别
    如何测试一个网页登陆界面
    二层交换机、三层交换机和路由器的原理及区别
    LSA分类
  • 原文地址:https://www.cnblogs.com/codexlx/p/14326788.html
Copyright © 2011-2022 走看看