es6-Math对象的扩展

1.Math.trunc()-用于去除一个数的小数部分,返回整数部分

Math.trunc(4.1)//4
Math.trunc(4.9)//4
Math.trunc(-4.1)//-4
Math.trunc(-4.9)//-4
Math.trunc(-0.1234)//-0

对于非数值,math.trunc()内部使用Number()方法将其先转为数值。

Math.trunc('123.456')//123

对于空值和无法截取整数的值,返回NAN。

Math.trunc(NAN)//NAN
Math.trunc('foo')//NAN
Nath.trunc()//NAN

2.Math.sign()-用于判断一个数到底是正数、负数、还是零

其返回值有5种情况:

参数为正数,返回+1

参数为负数,返回-1

参数为0,返回0

参数为-0,返回-0

其他值,返回NAN

Math.sign(-5)//-1
Math.sign(5)//+1
Math.sign(0)//+0
Math.sign(-0)//-0
Math.sign(NAN)//NAN
Math.sign('foo')//NAN
Math.sign()//NAN

3.Math.cbrt()-用于计算一个数的立方根

Math.cbrt(-1)//-1
Math.cbrt(0)//0
Math.cbrt(1)//1
Math.cbrt(2)//1.2599210498948734

对于非数值,Math.cbrt方法内部先使用Number方法将其转为数值

Math.cbrt('8')//2
Math.cbrt('hello')//NAN

4.Math.clz32()-返回一个数的32位无符号整数形式有多少个前导0

Math.clz32(0)//32
Math.clz32(1)//31
Math.clz32(1000)//22
Math.clz32(0b01000000000000000000000000000000)//1
Math.clz32(0b00100000000000000000000000000000)//2

上面的代码中,0的二进制形式全为0,所以有32个前导0;

1的二进制形式是0b1,只占1位,所以32位中有31个前导0;

1000的二进制形式是0b1111101000,一共有10位,所以32位中有22个前导0.

左移运算符(<<)与Math.clz32方法直接相关。

Math.clz32(0)//32
Math.clz32(1)//31
Math.clz32(1<<1)//30
Math.clz32(1<<2)//29
Math.clz32(1<<29)//2

对于小数,Math.clz32只考虑整数部分

Math.clz32(3.2)//30
Math.clz32(3.9)//30

对于空值或其他类型的值,Math.clz32方法会将其先转为数值,然后再计算。

Math.clz32()//32
Math.clz32(NAN)//32
Math.clz32(Infinity)//32
Math.clz32(null)//32
Math.clz32('foo')//32
Math.clz32([])//32
Math.clz32({})//32
Math.clz32(true)//31

5.Math.imul()-返回两个数以32位带符号整数形式相乘的结果,返回的是一个32位的带符号整数

Math.imul(2,4)//8
Math.imul(-1,8)//-8
Math.imul(-2,-2)//4

6.Math.fround()-返回一个数的单精度浮点数形式

Math.fround(0)//0
Math.fround(1)//1
Math.fround(1.337)//1.3370000123977661
Math.fround(1.5)//1.5
Math.fround(NAN)//NAN

7.Math.hypot()-返回所有参数的平方和的平方根

Math.hypot(3,4)//5
Math.hypot(3,4,5)//7.0710678118654755
Math.hypot()//0
Math.hypot(NAN)//NAN
Math.hypot(3,4,'foo')//NAN
Math.hypot(3,4,'5')//7.0710678118654755
Math.hypot(-3)//3

对数方法:

1.Math.expm1()

Math.expm1(x)返回e^x-1,即Math.exp(x)-1

Math.expm1(-1)//-0.6321205588285577
Math.expm1(0)//0
Math.expm1(1)//1.718281828459045

2.Math.log1p()

Math.log1p(x)返回\ln(1+x),即Math.log(1+x),如果x小于-1,返回NAN。

Math.log1p(1)//0.6931471805599453
Math.log1p(0)//0
Math.log1p(-1)//-Infinity
Math.log1p(-2)//NAN

3.Math.log10()

Math.log10(x)返回以10为底的x的对数。如果x小于0,返回NAN。

Math.log10(2)//0.3010299956639812
Math.log10(1)//0
Math.log10(0)//-Infinity
Math.log10(-2)//NAN
Math.log10(100000)//5

4.Math.log2()

Math.log2(x)返回以2为底的x的对数。如果x小于0,返回NAN。

Math.log2(3)//1.584962500721156
Math.log2(2)//1
Math.log2(1)//0
Math.log2(0)//-Infinity
Math.log2(-2)//NAN
Math.log2(1024)//10
Math.log2(1<<29)//29

三角函数方法:

Math.sinh(x)-返回x的双曲正弦

Math.cosh(x)-返回x的双曲余弦

Math.tanh(x)-返回x的双曲正切

Math.asinh(x)-返回x的反双曲正弦

Math.acosh(x)-返回x的反双曲余弦

Math.atanh(x)-返回x的反双曲正切

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值