003. es6数值的扩展

本文介绍了ES6中新增的数学方法,如Math.trunc(), Math.sign(), Math.cbrt()等,以及指数运算符(**),并对Number对象进行了扩展说明。探讨了这些新特性如何简化数学计算。

一、普通扩展

  1.  Number 方法,将字符串、数值转为十进制 : Number('0b111')
  2.  Number.isFinite() 用来检查一个数值是否为有限的:Number.isFinite(15)
  3.  Number.isNan() 用来检查一个值是否为NaN
  4.  Number.parseInt() 
  5.  Number.parseFloadt()
  6.  Number.isInteger() 用来判断一个数值是否为整数
  7.  Number.EPSILON , ES6 新增的一个极小的常量,它表示 1与大于 1 的最小浮点数之间的差。Number.EPSILON 的实质是一个可以接受的最小误差范围
  8.  Number.isSafeInteger() 。JavaScript 能够准确表示的整数范围在 -2^53 到 2^53之间(不含两个端点)。分别使用 Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER 表示。Number.isSafeInteger()则是用来判断一个整数是否落在这个范围之内。

二、Math对象的扩展

    ES6 在 Math 对象上新增了 17 个与数学相关的方法。所有这些方法都是静态方法,只能在 Math 对象上调用。

  •  Math.trunc() : Math.trunc 方法用于去除一个数的小数部分,返回整数部分。对于非数值, Math.trunc 内部先使用 Number 方法将其先转为数值,然后再去除小数部分。对于空值和无法获取整数的值,返回 NaN.
Math.trunc(4.1) // 4
Math.trunc(4.9) // 4
Math.trunc(-4.1) // -4

// 对于非数值,Math.trunc 内部使用 Number 方法将其先转为数值
Math.trunc('123.456') // 123
Math.trunc(true) // 1
Math.trunc(false) // 0

// 对于空值和无法截取整数的值,返回 NaN
Math.trunc(NaN) // NaN
Math.trunc('fo') // NaN
Math.trunc(); // NaN
  • Math.sign() : 该方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值
/**
 * 它会返回五种值:
 * 		- 参数为正数,返回 +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

 	// 如果参数是非数值,会自动转为数值。对于那些无法转为数值的值,会返回 NaN
 	Math.sign('')	// 0
 	Math.sign(true)	// +1
 	Math.sign(undefined)	// NaN
  • Math.cbrt() : 该方法用于计算一个数的立方根
 Math.cbrt(-1)		// -1
 Math.cbrt(0)		// 0
 Math.cbrt(1)		// 1
 Math.cbrt(8)		// 2

 // 对于非数值,Math.cbrt 方法内部也是先使用 Number 方法将其转为数值
 Math.cbrt('8')		// 2
 Math.cbrt('hello')	// NaN
  • Math.clz32() : JavaScript 的整数使用 32 位二进制形式表示,Math.clz32 方法返回一个数的 32 位无符号整数形式有多少个前导0 。对于小数,该方法只考虑整数部分
  • Math.imul() : 该方法返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数
  • Math.fround() : 该方法返回一个数的32位单精度浮点数形式
  • Math.hypot() : 该方法返回所有参数的平方和的平方根
 Math.hypot(3,4)		// 5
 Math.hypot(1,2,3)		// 3.741657386773941
 Math.hypot(0)			// 0
 Math.hypot(-3)			// 3
 Math.hypot(NaN)		// NaN

 // 如果参数不是数值,Math.hypot 方法会将其转为数值。只要有一个参数无法转为数值,就返回 NaN

三、其它

1、ES6 新增的对数相关方法

1.1 Math.expml() : Math.expml(x) 返回 e^x - 1 ,即 Math.exp(x) - 1

1.2 Math.log1p() : Math.log1p(x) 方法返回 1+x 的自然对数,即 Math.log(1+x)。如果 x 小于 -1,返回 NaN

1.3 Math.log10() : Math.log10(x) 方法返回以 10 为底的 x 的对数。如果 x 小于 0,则返回 NaN

1.4 Math.log2() : Math.log2(x) 方法返回以 2 为底的 x 的对数。如果 x 小于 0,则返回 NaN

2、双曲函数方法

Math.sinh(x)、Math.cosh(x)、Math.tanh(x)、Math.asinh(x)、Math.acosh(x)、Math.atanh(x)

3、指数运算符

ES2016 新增了一个指数运算符 (**)

2 ** 2    // 4
2 ** 3    // 8

 

转载于:https://my.oschina.net/u/3563169/blog/1860286

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值