ES6 数值
ES6 中新增了一些数值类型,比如 Number.EPSILON,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER 等,用于更方便的处理数值。
Number.EPSILON
Number.EPSILON 是一个介于 0 与 1 之间的小数,表示 1 与任何比 1 大的数之间的最小差值,它的值为 2-52,即 2.220446049250313e-16。
console.log(Number.EPSILON); // 2.220446049250313e-16
由于 JavaScript 中的浮点数有精度限制, Number.EPSILON 可以用来判断两个浮点数是否相等:
function isEqual(x, y) { return Math.abs(x - y) < Number.EPSILON; } console.log(isEqual(0.1 + 0.2, 0.3)); // true
Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER
Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER 表示在 JavaScript 中可以安全使用的最大和最小整数,它们的值分别为 9007199254740991 和 -9007199254740991。
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991 console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
它们可以用来检测一个整数是否落在安全范围内:
function isSafeInteger(num) { return ( Number.isSafeInteger(num) && num <= Number.MAX_SAFE_INTEGER && num >= Number.MIN_SAFE_INTEGER ); } console.log(isSafeInteger(Number.MAX_SAFE_INTEGER)); // true
Number.isInteger()
Number.isInteger() 方法可以用来判断一个数值是否为整数:
console.log(Number.isInteger(1)); // true console.log(Number.isInteger(1.1)); // false
它的行为与内置的全局函数 isInteger() 不同,它可以正确处理超出安全范围的整数:
console.log(Number.isInteger(3.0000000000000002)); // true console.log(Number.isInteger(3.0000000000000003)); // true console.log(Number.isInteger(3.0000000000000004)); // false
Number.isSafeInteger()
Number.isSafeInteger() 方法用来判断一个数值是否为安全整数,它的行为与 Number.isInteger() 类似,但只有在落在安全范围内的整数才会返回 true:
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER)); // true console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1)); // false