概念
JavaScript 的 Number 对象是经过封装的能让你处理数字值的对象。Number 对象由 Number() 构造器创建。
描述
Number 对象主要用于:
如果参数无法被转为数字,则返回 NaN.
早非构造器上下文中(如:没有 new 操作符),Number 能被用来执行类型转换
属性
Number.EPSTION
两个可表示(representable)数之间的最小间隔。EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16,或者 2-52。
1 | x = 0.2; |
Number.MAX_SAFE_INTEGER Number.MIN_SAFE_INTEGER
Number.MAX_SAFE_INTEGER 常量表示在 JavaScript 中最大的安全整数(maxinum safe integer)(253 - 1)。
Number.MIN_SAFE_INTEGER 代表在 JavaScript 中最小的安全的 integer 型数字 (-(253 - 1)).MAX_SAFE_INTEGER 常量值为 9007199254740991。
MIN_SAFE_INTEGER 的值是-9007199254740991.
1 | Number.MAX_SAFE_INTEGER; // 9007199254740991 |
Number.MAX_VALUE Number.MIN_VALUE
Number.MAX_VALUE 属性表示在 JavaScript 里所能表示的最大数值
Number.MIN_VALUE 属性表示在 JavaScript 中所能表示的最小的正值MAX_VALUE 属性值接近于 1.79E+308。大于 MAX_VALUE 的值代表 "Infinity"。
MIN_VALUE 的值约为 5e-324。小于 MIN_VALUE ("underflow values") 的值将会转换为 0。
因为 MAX_VALUE 是 Number 对象的一个静态属性,所有应该直接使用,Number.MAX_VALUE ,而不是作为一个创建的 Number 实例的属性。
1 | if (num1 * num2 <= Number.MAX_VALUE) { |
Number.NaN Number.prototype
Number.NaN 表示“非数字”(Not-A-Number)。和 NaN 相同。
Number.prototype 属性表示 Number 构造函数的原型。所有 Number 实例都继承自 Number.prototype。修改 Number 构造函数的原型对象会影响到所有 Number 实例。.
不必创建一个 Number 实例来访问该属性,使用 Number.NaN 来访问该静态属性。
属性
constructor
返回创建该实例对象的构造函数。默认为 Number 对象。
1 | Properties inherited from Object: |
方法
实例本身的方法 Number.isFinite()、Number.isInteger()、Number.isNaN()、Number.isSafeInteger()、Number.parseFloat()、Number.parseInt()
prototype 原型上的方法 Number.prototype.toExponential()、Number.prototype.toFixed()、Number.prototype.toLocaleString()、Number.prototype.toPrecision()、Number.prototype.toSource()、Number.prototype.toString()、Number.prototype.valueOf()
Number.isFinite() Number.isSafeInteger()
Number.isFinite() 方法用来检测传入的参数是否是一个有穷数(finite number)。
Number.isSafeInteger() 方法用来判断传入的参数值是否是一个“安全整数”(safe integer)。一个安全整数是一个符合下面条件的整数
语法
1 | Number.isFinite(value); |
注意
和全局的 isFinite()
函数相比,这个方法不会强制将一个非数值的参数转换成数值
,这就意味着,只有数值类型的值,且是有穷的(finite),才返回 true。
Number.isSafeInteger() 安全整数范围为 -(253 - 1)到 253 - 1 之间的整数,包含 -(253 - 1)和 253 - 1。
Number.isInteger()
Number.isInteger() 方法用来判断给定的参数是否为整数。
如果被检测的值是整数,则返回 true,否则返回 false。注意 NaN 和正负 Infinity 不是整数。
语法
1 | Number.isInteger(value); |
Number.isNaN()
Number.isNaN() 方法确定传递的值是否为 NaN 和其类型是 Number。它是原始的全局 isNaN()的更强大的版本。
语法
1 | Number.isNaN(value); |
描述
在 JavaScript 中,NaN 最特殊的地方就是,我们不能使用相等运算符(== 和 ===)来判断一个值是否是 NaN
,因为NaN == NaN
和NaN === NaN
都会返回false
。因此,必须要有一个判断值是否是 NaN 的方法。同样:
和全局函数 isNaN() 相比,该方法不会强制将参数转换成数字,只有在参数是真正的数字类型,且值为 NaN 的时候才会返回 true。
Number.parseInt() Number.parseFloat()
Number.parseFloat() 方法可以把一个字符串解析成浮点数。该方法与全局的 parseFloat() 函数相同,并且处于 ECMAScript 6 规范中(用于全局变量的模块化)。
Number.parseInt() 方法可以根据给定的进制数把一个字符串解析成整数。
语法
1 | Number.parseInt(string, radix); |
描述
该方法和全局的 parseInt() 函数是同一个函数:
该方法和全局的 parseFloat() 函数是同一个函数:
1 | 验证Number.parseInt、Number.parseFloat与全局的 parseInt、parseFloat是相同的 |
parseInt 函数将其第一个参数转换为字符串,解析它,并返回一个整数或 NaN。如果不是 NaN,返回的值将是作为指定基数(基数)
中的数字的第一个参数的整数。
例如:radix参数为 10
将会把第一个参数看作是一个数的十进制
表示,如果不属于 radix 参数所指定的基数中的字符那么该字符和气候的字符创都将被忽略。
在没有指定基数,或者基数为 0 的情况下,JavaScript 作如下处理:
- 如果字符串 string 以”0x”或者”0X”开头, 则基数是 16 (16 进制).
- 如果字符串 string 以”0”开头, 基数是 8(八进制)或者 10(十进制),那么具体是哪个基数由实现环境决定。ECMAScript 5 规定使用 10,但是并不是所有的浏览器都遵循这个规定。因此,永远都要明确给出 radix 参数的值。
- 如果字符串 string 以其它任何值开头,则基数是 10 (十进制)。
需要注意的是:如果第一个字符不能被转换成数字,parseInt 返回 NaN。
Number.prototype.toFixed()、Number.prototype.toPrecision()
toFixed() 方法使用定点表示法来格式化一个数。
toPrecision() 方法以指定的精度返回该数值对象的字符串表示。
语法
1 | numObj.toFixed(digits); |
该数值在必要时进行四舍五入,另外在必要时会用 0 来填充小数部分,以便小数部分有指定的位数。
Number.prototype.toLocaleString()、Number.prototype.toString()、Number.prototype.valueOf()
toString() 方法返回指定 Number 对象的字符串表示形式。
valueOf() 方法返回一个被 Number 对象包装的原始值。
语法
1 | numObj.toString([radix]); |
Number 对象覆盖了 Object 对象上的 toString() 方法,它不是继承的 Object.prototype.toString()。对于 Number 对象,toString() 方法以指定的基数返回该对象的字符串表示。
valueOf()该方法通常是由 JavaScript 引擎在内部隐式调用的,而不是由用户在代码中显式调用的