• 内置对象——数值


    数值

    (1)数值的表示

    • 二进制表示法新写法: 前缀 0b 或 0B 。

    console.log(0b11===3); // true

    console.log(0B11===3); // true

    • 八进制表示法新写法: 前缀 0o 或 0O 。

    console.log(0o11===9); // true

    console.log(0O11===9); // true

    (2)方法

    • Number.isFinite():用于检查一个数值是否为有限的( finite ),即不是 Infinity

    console.log( Number.isFinite(1));   // true

    console.log( Number.isFinite(0.1)); // true

    // NaN 不是有限的

    console.log( Number.isFinite(NaN)); // false

    console.log( Number.isFinite(Infinity));  // false

    console.log( Number.isFinite(-Infinity)); // false

    // Number.isFinate 没有隐式的 Number() 类型转换,所有非数值都返回 false

    console.log( Number.isFinite('foo')); // false

    console.log( Number.isFinite('15'));  // false

    console.log( Number.isFinite(true));  // false

    Number.isNaN()

    用于检查一个值是否为NaN。

    console.log(Number.isNaN(NaN));      // true

    console.log(Number.isNaN('true'/0)); // true

    // 在全局的 isNaN() 中,以下皆返回 true,因为在判断前会将非数值向数值转换

    // 而 Number.isNaN() 不存在隐式的 Number() 类型转换,非 NaN 全部返回 false

    Number.isNaN("NaN");      // false

    Number.isNaN(undefined);  // false

    Number.isNaN({});         // false

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

    • Number.parseInt():从全局移植到 Number 对象的方法,逐步减少全局方法,用于全局变量的模块化。方法的行为没有发生改变。

    // 不指定进制时默认为 10 进制

    Number.parseInt('12.34'); // 12

    Number.parseInt(12.34);   // 12

    // 指定进制

    Number.parseInt('0011',2); // 3

    // 与全局的 parseInt() 函数是同一个函数

    Number.parseInt===parseInt; // true

    Number.parseFloat()

    用于把一个字符串解析成浮点数。

    Number.parseFloat('123.45')    // 123.45

    Number.parseFloat('123.45abc') // 123.45

    // 无法被解析成浮点数,则返回 NaN

    Number.parseFloat('abc') // NaN

    // 与全局的 parseFloat() 方法是同一个方法

    Number.parseFloat===parseFloat// true

    Number.isInteger()

    用于判断给定的参数是否为整数。

    Number.isInteger(value)

    Number.isInteger(0); // true

    // JavaScript 内部,整数和浮点数采用的是同样的储存方法,因此 1 与 1.0 被视为相同的值

    Number.isInteger(1);   // true

    Number.isInteger(1.0); // true

    Number.isInteger(1.1);     // false

    Number.isInteger(Math.PI); // false

    // NaN 和正负 Infinity 不是整数

    Number.isInteger(NaN);       // false

    Number.isInteger(Infinity);  // false

    Number.isInteger(-Infinity); // false

    Number.isInteger("10");  // false

    Number.isInteger(true);  // false

    Number.isInteger(false); // false

    Number.isInteger([1]);   // false

    // 数值的精度超过 53 个二进制位时,由于第 54 位及后面的位被丢弃,会产生误判

    Number.isInteger(1.0000000000000001) // true

    // 一个数值的绝对值小于 Number.MIN_VALUE(5E-324),即小于 JavaScript 能够分辨

    // 的最小值,会被自动转为 0,也会产生误判

    Number.isInteger(5E-324); // false

    Number.isInteger(5E-325); // true

    Number.isSafeInteger()

    用于判断数值是否在安全范围内。

    Number.isSafeInteger(Number.MIN_SAFE_INTEGER-1); // false

    Number.isSafeInteger(Number.MAX_SAFE_INTEGER+1); // false

    (3)Math对象的扩展

    ES6 在 Math 对象上新增了 17 个数学相关的静态方法,这些方法只能在 Math 中调用。

    • Math.cbrt():用于计算一个数的立方根。

    Math.cbrt(1);  // 1

    Math.cbrt(0);  // 0

    Math.cbrt(-1); // -1

    // 会对非数值进行转换

    Math.cbrt('1'); // 1

    // 非数值且无法转换为数值时返回 NaN

    Math.cbrt('hhh'); // NaN

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

    // 大多数情况下,结果与 a * b 相同 

    Math.imul(1, 2);   // 2

    • Math.hypot():用于计算所有参数的平方和的平方根。勾股定理

    Math.hypot(3, 4); // 5

  • 相关阅读:
    【项目实战课】基于Pytorch的PFLD人脸关键点检测实战
    JDK、JRE、JVM三者关系
    图数据挖掘:网络中的级联行为
    CentOS安装Docker以及常用命令
    数据结构_第二章 线性表
    Java设计模式——单例模式(static修饰)
    rh358 002 fact变量获取 ansible配置网络 service_facts
    Python之pip命令指定安装源和版本
    Swin Transformer代码实现部分细节重点
    Vue混入与插件
  • 原文地址:https://blog.csdn.net/cjx177187/article/details/125481524