文章目录
二进制、八进制表示
二进制
0b前缀
八进制
0o前缀
转为10进制
使用Number()即可
Number.isFinite()、Number.isNaN()
Number.isFinite()
用来检查一个数值是否有限
Number.isNaN()
检查一个值是否为NaN
与传统方法的区别
传统方法先调用Number(),将非数值转为数值再进行判断。而Number下的两个函数则是只对数值进行判断。
isFinite("25");
//result: true
Number.isFinite("25");
//result: false
Number.isFinite(25);
//result: true
Number.parseInt()、Number.Float()
将全局方法移植到Number对象上,用法返回保持不变。
为了减少全局性方法,使语言逐步模块化。
Number.parseInt("12.34");
//result: 12
Number.parseFloat("12.34#");
//result: 12.34
Number.isInteger()
判断一个值是否为整数。
在JavaScript内部,整数和浮点数的存储方法相同。所以
Number.isInteger(3.0);
//result: true
Number.isInteger(3);
//result: true
Number.EPSILON
极小量,可接受的误差范围
目的在于为浮点数计算设置一个误差范围。当计算结果小于这个误差范围就可以认为是得到了正确结果。
安全整数和Number.isSafeInteger()
安全整数
Number.MAX_SAFE_INTEGER:整数范围上限253 - 1
Number.MIN_SAFE_INTEGER:整数范围下限-253 + 1
Number.isSafeInteger()
判断一个整数是否是安全整数。
如果要验证运算结果是否在安全整数的范围内,那么需要验证参与运算的所有的值及结果。
9007199254740993 === 9007199254740992
//result: true
Math对象扩展
Math.trunc()
去除数的小数部分,返回整数部分
对空值和无法截取整数的值,返回NaN
Math.sign()
判断一个数是正数/负数/0
console.log(
Math.sign(1),
Math.sign(-1),
Math.sign(0),
Math.sign(-0),
Math.sign()
);
//Output: 1 -1 0 -0 NaN
Math.cbrt()
计算一个数的立方根。
对于非数值,先使用Number()转为数值再进行计算。
Math.clz32()
返回一个数的32位无符号整数形式有多少个前导0。
名字来源:”count leading zero bits in 32-bit binary representations of a number“
对于小数,该函数只考虑整数部分。
对于空值和其他类型的函数,会将其转为数值,再进行计算。
Math.clz32('0')
//result: 32
Math.imul()
返回两个数以32位带符号整数相乘的结果,返回的也是一个32位的带符号整数。
对于大数相乘,JavaScript的精度无法正确显示,超过253的值无法精确表示,低位的数值不精确。使用该方法可以返回正确的低位数值
(0x7fffffff * 0x7fffffff)|0
//result: 0
Math.imul(0x7fffffff , 0x7fffffff)
//result: 1
Math.fround()
返回一个数的单精度浮点数形式
Math.fround(1.33);
//result: 1.3300000429153442
Math.hypot()
返回所有参数的平方和的平方根
(其实类似于已知直角三角形的相邻边长度,求斜边的长度。)
如果参数不是数值,会将其转为数值后计算。
只要有一个参数无法转为数值,就会返回NaN
Math.hypot(3, 4);
//result: 5
Math.hypot(6, 8);
//result: 10
Math.hypot(1,3,4,5)
//result: 7.1414284285428495
对数方法
Math.expm1(x)
返回ex-1,即
Math.exp(x) - 1
Math.log1p(x)
返回1 + x的自然对数,即Math.log(1 + x),如果x < -1 返回NaN
Math.log(1 + x);
Math.log10(x)
返回以10为底的x的对数
如果x< 0 ,则返回NaN
Math.log(x) / Math.LN10
Math.log2(x)
返回以2为底的x的对数,如果x<0,则返回NaN
Math.log(x) / Math.LN2
三角函数方法
Math.sinh(x)
返回x的双曲正弦
Math.cosh(x)
返回x的双曲余弦
Math.tanh(x)
返回x的双曲正切
Math.sin(x)
返回x的正弦值
Math.cos(x)
返回x的余弦值
Math.tan(x)
返回x的正切值
整理来源:http://caibaojian.com/es6/number.html