回顾es5之前进制转换,通过toSting和parseInt的方式。点击跳转
二进制与八进制
ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。
1 | 0b111110111 === 503 // true |
Number.isFinite(), Number.isNaN(),Number.isInteger()
Number.isFinite()
:判断数值是否为有限的(finite)。Number.isNaN()
:判断数值是否是NaN。Number.isInteger()
:判断数值是否是整数。
与传统的方法不同,不会先调用Number()
转换为数值后再进行判断,而是直接判断,不是number类型的直接返回false
。
1 | Number.isFinite(10); // true |
Number.parseInt(), Number.parseFloat()
整合全局方法到Number对象上,行为保持不变。
1 | // ES5的写法 |
Number.EPSILON
Number.EPSILON 属性表示 1 和大于 1 的最小值(可表示为 Number)的差值。
1 | x = 0.1; |
Number.isSafeInteger()
JavaScript 能够准确表示的整数范围在-2^53到2^53之间(不含两个端点),超过这个范围,无法精确表示这个值。Number.isSafeInteger()
用来判断是否在该数值范围内。
Math扩展
- Math.trunc方法用于去除一个数的小数部分,返回整数部分。非数值默认先调用Number转换。
- Math.sign方法的返回值判断一个数到底是正数(+1)、负数(-1)、还是零(0 -0),其他值(NaN)。非数值默认先调用Number转换。
- Math.cbrt方法用于计算一个数的立方根。
- Math.clz32方法返回一个数的 32 位无符号整数形式有多少个前导 0。
- Math.imul方法返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。
- Math.fround 方法返回一个数的单精度浮点数形式。
Math.hypot方法返回所有参数的平方和的平方根。
Math.expm1(x)返回 ex - 1,即Math.exp(x) - 1。
- Math.log1p(x)方法返回1 + x的自然对数,即Math.log(1 + x)。如果x小于-1,返回NaN。
- Math.log10(x)返回以 10 为底的x的对数。如果x小于 0,则返回 NaN。
Math.log2(x)返回以 2 为底的x的对数。如果x小于 0,则返回 NaN。
Math.sinh(x) 返回x的双曲正弦(hyperbolic sine)
- Math.cosh(x) 返回x的双曲余弦(hyperbolic cosine)
- Math.tanh(x) 返回x的双曲正切(hyperbolic tangent)
- Math.asinh(x) 返回x的反双曲正弦(inverse hyperbolic sine)
- Math.acosh(x) 返回x的反双曲余弦(inverse hyperbolic cosine)
Math.atanh(x) 返回x的反双曲正切(inverse hyperbolic tangent)
Math.sign()用来判断一个值的正负,但是如果参数是-0,它会返回-0。
指数运算符
ES2016 新增了一个指数运算符(**)。相当于Math.pow(base,exponent)。
1 | 2 ** 2 // 4 |