• javaScript中Number数字类型方法入门


    前言

    Number和Math都属于JavaScript中的内置对象,Number数字类型作为基础数据类型,我们在开发过程中会经常用到,包括数字精度的格式化,还有字符串转换成数字等操作。

    Number数字

    自带属性值

    
    Number.EPSILON 两个可表示(representable)数之间的最小间隔。
    
    Number.MAX_SAFE_INTEGER JavaScript 中最大的安全整数 (2^53 - 1)。
    
    Number.MAX_VALUE 能表示的最大正数。最小的负数是 -MAX_VALUENumber.MIN_SAFE_INTEGER JavaScript 中最小的安全整数 (-(2^53 - 1)).
    
    Number.MIN_VALUE 能表示的最小正数即最接近 0 的正数 (实际上不会变成 0)。最大的负数是 -MIN_VALUENumber.NaN 特殊的“非数字”值。
     
    Number.NEGATIVE_INFINITY 特殊的负无穷大值,在溢出时返回该值。
    
    Number.POSITIVE_INFINITY 特殊的正无穷大值,在溢出时返回该值。
    
    

    基础使用

    new Number实例化数字对象和Number强转数字字符串,两个值的并不相等

    var value1 = new Number("123");
    this.value1 = value1;
    console.log(`value1 === 123 is ${value1 === 123}`); // value1 === 123 is false
    
    var value2 = Number("123");
    this.value2 = value2;
    console.log(`value2 === 123 is ${value2 === 123}`); // value2 === 123 is true
    
    
    
    
    // 判断Number类型
    console.log(value1 instanceof Number);
    console.log(value2 instanceof Number);
    
    
    Number将转换字符串为数字
    
    Number("123"); // 123
    Number("12.3"); // 12.3
    Number("12.00"); // 12
    Number("123e-1"); // 12.3
    Number(""); // 0
    Number(null); // 0
    Number("0x11"); // 17
    Number("0b11"); // 3
    Number("0o11"); // 9
    Number("foo"); // NaN
    Number("100a"); // NaN
    Number("-Infinity"); //-Infinity
    
    
    Number判断数字是否是NAN
    
    let number1 = new Number("123");
    let number2 = 123;
    let number3 = "string";
    let number4 = null;
    console.log(Number.isNaN(number1)); //  false
    console.log(Number.isNaN(number2)); //  false
    console.log(Number.isNaN(number3)); //  false
    console.log(Number.isNaN(number4)); //  false
    console.log(Number.isNaN(NaN)); //  true
    
    
    Number.isFinite 是否是一个有穷数
    console.log(Number.isFinite(1 / 0));
    // false
    console.log(Number.isFinite(10 / 5));
    // true
    console.log(Number.isFinite(0 / 0));
    // false
    
    
    Number.isInteger 判断给定的参数是否为整数
    
    function checkInteger(x, y) {
      if (Number.isInteger(y / x)) {
        return "整数";
      }
      return "非整数";
    }
    console.log(checkInteger(5, 10));
    // "整数"
    console.log(checkInteger(5, 11));
    // "非整数"
    
    
    Number.isSafeInteger 判断传入的参数值是否是一个“安全整数”(safe integer)

    备注:

    Number.isSafeInteger() 方法用来判断传入的参数值是否是一个“安全整数”(safe integer)。
    一个安全整数是一个符合下面条件的整数:
    可以准确地表示为一个IEEE-754双精度数字,
    其IEEE-754表示不能是舍入任何其他整数以适应IEEE-754表示的结果。.
    比如,2^53 - 1 是一个安全整数,它能被精确表示,在任何 IEEE-754 舍入模式(rounding mode)下,没有其他整数舍入结果为该整数。作为对比,2^53 就不是一个安全整数,它* 能够使用 IEEE-754 表示,但是 2^53 + 1 不能使用 IEEE-754 直接表示,在就近舍入(round-to-nearest)和向零舍入中,会被舍入为 2^53。
    安全整数范围为 -(2^53 - 1)到 2^53 - 1 之间的整数,包含 -(2^53 - 1)和 2^53 - 1。

    Number.isSafeInteger(3); // true
    Number.isSafeInteger(Math.pow(2, 53)); // false
    Number.isSafeInteger(Math.pow(2, 53) - 1); // true
    Number.isSafeInteger(NaN); // false
    Number.isSafeInteger(Infinity); // false
    Number.isSafeInteger("3"); // false
    Number.isSafeInteger(3.1); // false
    Number.isSafeInteger(3.0); // true
    
    
    Number.parseFloat 将字符串数字转成数字类型

    备注:

    • 方法可以把一个字符串解析成浮点数。该方法与全局的 parseFloat() 函数相同,并且处于 ECMAScript 6 规范中(用于全局变量的模块化)。
    • 给定值被解析成浮点数,如果无法被解析成浮点数,则返回NaN
    
    function checkFloat(r) {
      return parseFloat(r);
    }
    console.log(checkFloat(4.567));
    // 4.567
    console.log(checkFloat("4.567abcdefgh"));
    // 4.567
    console.log(checkFloat("abcdefgh"));
    // NaN
    
    
    
    Number.parseInt 将数字字符串转成整数
    /**
     *
     * Number.parseInt()
     * 方法依据指定基数 [ 参数 radix 的值],把字符串 [ 参数 string 的值] 解析成整数。
     * @params string:要解析的值。 如果此参数不是字符串,则使用ToString抽象操作将其转换为字符串。忽略此参数中的前导空格。
     * @params radix:一个介于2到36之间的整数,代表字符串的基数(数学数字系统中的基)。小心-这并不是默认为10。
     * 从给定字符串中解析的整数。如果基数小于11,且第一个非空白字符不能转换为数字,则返回NaN。
     *
     * */
     
    function checkInt(x, base) {
      const parsed = parseInt(x, base);
      if (isNaN(parsed)) {
        return 0;
      }
      return parsed * 100;
    }
    console.log(checkInt(" 0xF", 16));
    // 1500
    console.log(checkInt("321", 2));
    // 0
    
    
    Number.prototype.toFixed() 把数字转换为字符串,返回小数点后有指定位数的数字
    
    var numObj = 5.123456;
    var n = numObj.toFixed(2); // 5.12
    
    
    
    Number.prototype.toPrecision() 以指定的精度返回该数值对象的字符串表示
    
    var numObj = 5.123456;
    console.log("numObj.toPrecision()  is " + numObj.toPrecision()); // 输出 5.123456
    console.log("numObj.toPrecision(5) is " + numObj.toPrecision(5)); // 输出 5.1235
    console.log("numObj.toPrecision(2) is " + numObj.toPrecision(2)); // 输出 5.1
    console.log("numObj.toPrecision(1) is " + numObj.toPrecision(1)); // 输出 5
    // 注意:在某些情况下会以指数表示法返回
    console.log((1234.5).toPrecision(2)); // "1.2e+3"
    
    
    Number 转换 Date 对象
    
    var d = new Date("December 17, 1995 03:24:00");
    console.log(Number(d));
    
    

    结尾

    在Number数字类型中,使用最多的应该是:

    • isNaN判断数字是否是非数字NAN
    • parseFloat将数字字符串转成数字类型
    • parseInt 解析字符串转成整数
    • toPrecision作为数字的方法,返回该数值的指定精度,包含小数位
    • toFixed 返回指定小数点精度的数字,需要注意和toPrecision区分开来

    源码地址

    文章个人博客地址:javaScript中Number数字类型基本方法入门

    欢迎关注公众号:程序员布欧,不定期更新一些前端入门文章

    创作不易,转载请注明出处和作者。

  • 相关阅读:
    Java面试算法(1)——斐波那契数列(含例题)
    Verilog 组合逻辑 UDP
    “系统重要性银行”光环下,南京银行的重重忧思
    JMeter性能分析实战一:日常登录接口
    【leetcode热题Hot100】——任务调度器
    uniapp开发app——nvue
    小米手机买什么蓝牙耳机好?适配小米手机的蓝牙耳机推荐
    数据结构教程
    麻省理工学院与Meta AI共同开发StreamingLLM框架,实现语言模型无限处理长度
    ios 代码上下文截屏之后导致的图片异常问题
  • 原文地址:https://www.cnblogs.com/akari16/p/16201678.html