es6学习笔记-数值的扩展_V1.0_byKL

es6学习笔记-数值的扩展

有一些不常用或者还不支持的就没有记录了,总体来说本篇只是一个备忘而已

Number.isFinite(), Number.isNaN()

Number.isFinite()用来检查一个数值是否为有限的(finite)。

console.log(Number.isFinite(15)); // true
console.log(Number.isFinite(0.8)); // true
console.log(Number.isFinite(NaN)); // false
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite(-Infinity)); // false
console.log(Number.isFinite('foo')); // false,字符串也是false
console.log(Number.isFinite('15')); // false
console.log(Number.isFinite(true)); // false,布尔值也是false

Number.isNaN()用来检查一个值是否为NaN。

console.log(Number.isNaN(NaN)) // true
console.log(Number.isNaN(15)) // false
console.log(Number.isNaN('15')) // false
console.log(Number.isNaN(true)) // false
console.log(Number.isNaN(9/NaN)) // true
console.log(Number.isNaN('true'/0)) // true
console.log(Number.isNaN('true'/'true')) // true

两个新方法只对数值有效,非数值一律返回false。

parseInt()和parseFloat()

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

// ES5的写法
parseInt('12.34') // 12
parseFloat('123.45#') // 123.45

// ES6的写法
Number.parseInt('12.34') // 12

Number.isInteger()

Number.isInteger()用来判断一个值是否为整数。需要注意的是,在JavaScript内部,整数和浮点数是同样的储存方法,所以3和3.0被视为同一个值。

console.log(Number.isInteger(25)) // true
console.log(Number.isInteger(25.0)) // true
console.log(Number.isInteger(25.1)) // false
console.log(Number.isInteger("15")) // false
console.log(Number.isInteger(true)) // false

Number.EPSILON

  • ES6在Number对象上面,新增一个极小的常量Number.EPSILON,为浮点数计算,设置一个误差范围。

  • 如果这个误差能够小于Number.EPSILON,我们就可以认为得到了正确结果。

0.1 + 0.2
// 0.30000000000000004

0.1 + 0.2 - 0.3
// 5.551115123125783e-17

5.551115123125783e-17.toFixed(20)
// '0.00000000000000005551' //无限接近0

Number.EPSILON.toFixed(20)
// '0.00000000000000022204' //只要比这个数小,我们就当他是正确的


function withinErrorMargin (left, right) {
    return Math.abs(left - right) < Number.EPSILON;
}
console.log(withinErrorMargin(0.1 + 0.2, 0.3))
// true
console.log(withinErrorMargin(0.2 + 0.2, 0.3))
// false

安全整数和Number.isSafeInteger()

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

console.log(Math.pow(2, 53)); // 9007199254740992
console.log(Number.MAX_SAFE_INTEGER === Math.pow(2, 53) + 1)//false
console.log(Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1) //true,等于一个比最大范围少于1的数

同理可鉴Number.MAX_SAFE_INTEGER

Number.isSafeInteger()则是用来判断一个整数是否落在这个范围之内。

console.log(Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1)) // false
console.log(Number.isSafeInteger(Number.MIN_SAFE_INTEGER)) // true
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER)) // true
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1)) // false

Math对象的扩展

Math.trunc

Math.trunc方法用于去除一个数的小数部分,返回整数部分

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

Math.sign()

Math.sign方法用来判断一个数到底是正数、负数、还是零。

console.log(Math.sign(-5)) // -1
console.log(Math.sign(5)) // 1
console.log(Math.sign(0)) // 0
console.log(Math.sign(-0)) // -0
console.log(Math.sign(NaN)) // NaN
console.log(Math.sign('foo')); // NaN
console.log(Math.sign());      // NaN

参考引用:

  1. es6数值扩展

你可能感兴趣的:(es6,javascript)