es6-数值的扩展

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39396275/article/details/84336134

1.Number.isFinite(), Number.isNaN()

ES6 在Number对象上,新提供了Number.isFinite()和Number.isNaN()两个方法。

Number.isFinite()用来检查一个数值是否为有限的(finite),即不是Infinity。
注意,如果参数类型不是数值,Number.isFinite一律返回false。

它们与传统的全局方法isFinite()和isNaN() 的区别在于:
传统的全局方法会先调用Number()将非数值的值转为数值,在进行判断;而这两个新方法只对数值有效。
Number.isFinite()对于非数值一律返回false,Number.isNaN()只对NaN才返回true。

isFinite(25) // true
isFinite("25") // true
Number.isFinite(25) // true
Number.isFinite("25") // false

isNaN(NaN) // true
isNaN("NaN") // true
Number.isNaN(NaN) // true
Number.isNaN("NaN") // false
Number.isNaN(1) // false

2.Number.parseInt(), Number.parseFloat()

ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变。

Number.parseInt === parseInt // true
Number.parseFloat === parseFloat // true

3.Number.isInteger()

用来判断一个数值是否为整数,但是在js中存储整数和存储浮点数是用同一种方法,所以25和25.0是同一个值。

4.Number.EPSILON

Number.EPSILON实际上是 JavaScript 能够表示的最小精度(等于 2 的 -52 次方)。误差如果小于这个值,就可以认为已经没有意义了,即不存在误差了。

eg:误差范围设为 2 的-50 次方(即Number.EPSILON * Math.pow(2, 2)),即如果两个浮点数的差小于这个值,我们就认为这两个浮点数相等。

function withinErrorMargin (left, right) {
  return Math.abs(left - right) < Number.EPSILON * Math.pow(2, 2);
}

0.1 + 0.2 === 0.3 // false
withinErrorMargin(0.1 + 0.2, 0.3) // true

1.1 + 1.3 === 2.4 // false
withinErrorMargin(1.1 + 1.3, 2.4) // true

JavaScript 能够准确表示的整数范围在-253到253之间(不含两个端点),超过这个范围,无法精确表示这个值。

Math对象的扩展

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

(1)Math.trunc()
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
Math.trunc(true) //1
Math.trunc(false) // 0
Math.trunc(null) // 0

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

Math.trunc(NaN);      // NaN
Math.trunc('foo');    // NaN
Math.trunc();         // NaN
Math.trunc(undefined) // NaN

(2)Math.sign()

用来判断一个数到底是正数,负数,还是零。对于非数值,会先将其转换为数值。
(3)Math.cbrt()
计算一个数的开立方根

Math.cbrt(8);// 2

(4)Math.hypot()
Math.hypot方法返回所有参数的平方和的平方根。

Math.hypot(3, 4);        // 5

还有指数,对数的计算方法,目前还用不到,暂时不写

猜你喜欢

转载自blog.csdn.net/qq_39396275/article/details/84336134