zoukankan      html  css  js  c++  java
  • 原生JS:Number对象详解

    Number对象

    本文参考MDN做的详细整理,方便大家参考MDN
    JavaScript 的 Number 对象是经过封装的能让你处理数字值的对象。Number 对象由 Number() 构造器创建。
    new Number(value);
    如果参数无法被转换为数字,则返回 NaN。
    在非构造器上下文中 (如:没有 new 操作符),Number(x) 能被用来执行类型转换。

    属性:

    Number.EPSILON IE Safari无
    两个可表示(representable)数之间的最小间隔。EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16, 或者 2的-52次方.
    Number.MAX_SAFE_INTEGER IE无
    在 JavaScript 中最大的安全整数 (2的53次方 - 1)。值是9007199254740991,这个数字形成的原因是,Javascript在IEEE 754 中使用double-precision floating-point format numbers作为规定,在这个规定中能安全的表示数字的范围在-(2的53次方 - 1) 到 2的53次方 - 1之间.
    Number.MAX_VALUE
    能表示的最大正数。最大的负数是 -MAX_VALUE。MAX_VALUE 属性值接近于 1.79E+308。大于 MAX_VALUE 的值代表 "Infinity"。

    if (num1 * num2 <= Number.MAX_VALUE) {
       func1();
    } else {
       func2();
    }
    

    Number.MIN_VALUE
    能表示的最小正数即最接近 0 的正数 (实际上不会变成 0)。最小的负数是 -MIN_VALUE。MIN_VALUE 的值约为 5e-324。小于 MIN_VALUE ("underflow values") 的值将会转换为 0。
    if (num1 / num2 >= Number.MIN_VALUE){...}
    Number.NaN
    特殊的“非数字”值(Not-A-Number)。和 NaN 相同
    Number.NEGATIVE_INFINITY
    特殊的负无穷大值,在溢出时返回该值。它和全局对象的 Infinity 属性的负值相同,该值的表现同数学上的无穷大有点儿不同(见MDN)
    Number.POSITIVE_INFINITY
    特殊的正无穷大值,在溢出时返回改值。它同全局对象 Infinity 属性的值相同,该值的表现同数学上的无穷大有点儿不同(见MDN)
    Number.prototype
    表示 Number 构造函数的原型。

    静态方法

    Number.isNaN() IE Safari无
    用来检测传入的值是否是 NaN。只有在参数是真正的数字类型,且值为 NaN 的时候才会返回 true。
    在 JavaScript 中,NaN 最特殊的地方就是,我们不能使用相等运算符(== 和 ===)来判断一个值是否是 NaN,因为 NaN == NaN 和 NaN === NaN 都会返回 false。因此,必须要有一个判断值是否是 NaN 的方法
    和全局函数 isNaN() 相比,该方法不会强制将参数转换成数字,只有在参数是真正的数字类型,且值为 NaN 的时候才会返回 true。
    兼容写法Polypill:

    Number.isNaN = Number.isNaN || function(value) {
        return typeof value === "number" && isNaN(value);
    }
    

    Number.isFinite() IE Safari无
    用来检测传入的参数是否是一个有穷数。和全局的 isFinite() 函数相比,这个方法不会强制将一个非数字的参数转换成数字,这就意味着,只有真正的数字才有可能返回 true。
    Polypill

    Number.isFinite = Number.isFinite || function(value) {
        return typeof value === "number" && isFinite(value);
    }
    

    Number.isInteger() IE Safari无
    确定传递的值类型是“number”,且是整数。
    Polypill

    Number.isInteger = Number.isInteger || function(value) {
        return typeof value === "number" && 
               isFinite(value) && 
               Math.floor(value) === value;
    };
    

    Number.isSafeInteger() 只有Firefox实现
    用来判断传入的参数值是否是一个“安全整数”(处于 -(2的53次方 -1) 和 2的53次方 -1 之间的整数)。
    Number.parseFloat() IE Safari无
    把一个字符串解析成浮点数,和全局对象 parseFloat() 一样。
    Number.parseInt(string[, radix]) IE Safari无
    根据给定的进制数把一个字符串解析成整数,和全局对象 parseInt() 一样。

    Number 实例方法

    数字字面量直接调用以下方法:只要能够让JavaScript引擎不混淆小数点和对象的点运算符,各种写法都能用,JavaScript会把第一个点理解成小数点(即10.0),把第二个点理解成调用对象属性,从而得到正确结果。

    (10).toString(2)
    10..toString(2) // "1010"
    10 .toString(2) // "1010"
    10.0.toString(2) // "1010"
    10['toString'](2) // "1010"
    

    Number.prototype.toExponential(n)
    将一个数转为科学计数法形式字符串。参数表示小数点后有效数字的位数,范围为0到20,超出这个范围,会抛出一个RangeError。
    Number.prototype.toFixed(x)
    将一个数转为指定位数x的小数,返回这个小数对应的字符串(会进行四舍五入),位数x有效范围为0到20,超出这个范围将抛出RangeError错误。
    Number.prototype.toLocaleString()
    返回一个根据本地语言环境的数字格式字符串。重写了Object.prototype.toLocaleString() 方法
    Number.prototype.toPrecision(n)
    用于将一个数转为指定位数n的有效数字的字符串,参数n为有效数字的位数,范围是1到21,超出这个范围会抛出RangeError错误。该方法执行的四舍五入不可靠,跟浮点数不是精确储存有关,如:

    (12.35).toPrecision(3) // "12.3"
    (12.25).toPrecision(3) // "12.3"
    (12.15).toPrecision(3) // "12.2"
    (12.45).toPrecision(3) // "12.4"
    

    Number.prototype.toString(radius)
    用来将一个数值转为字符串形式.
    可选的参数radius,表示输出的进制,默认是10进制
    Number.prototype.valueOf()
    返回一个 Number 对象的基本数字值.。重写了 Object.prototype.valueOf() 方法.

  • 相关阅读:
    获取数据
    织梦入门2-采集1
    织梦入门1-修改
    ThinkPHP角色控制时的错误
    sublime 3打开中文乱码问题
    php抓取远程数据显示在下拉列表中
    php curl的正确使用方法
    Linux 在文件夹的所有文件中查找某字符
    webman 关于数据库性能
    虚拟机centos安装方法
  • 原文地址:https://www.cnblogs.com/susufufu/p/5846698.html
Copyright © 2011-2022 走看看