你可能会错过的ES6数字和数学功能

Photo by Michael Van Kerckhove on Unsplash

ES6引入了各种数学和数字方法以及属性。在本文中,我们将介绍一些我们可能错过的有用的 NumberMath 属性。

新 Number 属性

Number 对象具有我们可以使用的新属性和方法。

Number.EPSILON

Number.EPSILON 属性用于比较浮点数是否在四舍五入误差的公差值内。它是一个只读属性。

它表示1与大于1的最小浮点数之间的差。

例如,我们可以编写以下代码来使用它:

const result = Math.abs(0.3 - 0.4 + 0.1);

console.log(result); // 2.7755575615628914e-17

console.log(result < Number.EPSILON); // true

0.3 - 0.4 + 0.1 应该为 0 ,但是由于JavaScript对浮点值的处理,结果为 2.7755575615628914e-17

使用 Number.EPSILON,我们可以检查 result 是否是如此之小,以至于像在最后一行中那样接近0。

Number.isInteger(num)

Number.isInteger 检查给定的 num 是否为整数。例如,我们可以按以下方式使用它:

Number.isInteger(2.05); // false

Number.isInteger(2); // true

Number.isSafeInteger(number)

还有 isSafeInteger 方法来检查JavaScript整数是否在JavaScript可以接受的范围内。该范围由Number.MIN_SAFE_INTEGERNumber.MAX_SAFE_INTEGER 的值表示。

Number.MIN_SAFE_INTEGER 为-9007199254740991,Number.MAX_SAFE_INTEGER 为9007199254740991。

Number.isNaN(num)

Number.isNaN 检查 num 是否为NaN。与全局 isNaN() 函数不同,此方法不将其参数强制为数字。因此,对于非数字使用它是安全的。

例如,isNaN('abc') 返回 true,而 Number.isNaN('abc') 返回 false。因此,它实际上是在检查 num 是否真的是 NaN,而不是将值强制为一个数字,并检查强制值是否是 NaN

Number.parseInt(num, radix)

Number.parseInt 与全局 parseInt 函数具有相同的作用。它使用要转换的数字字符串和基数(即数字将被转换为基数的基数)作为第二个参数。

例如,我们可以编写以下代码来做到这一点:

Number.parseInt('11', 8); // 9

上面的代码返回9,因为我们通过将8作为第二个参数传入来假设字符串是八进制数。

Number.parseInt 对八进制或二进制数字文字没有特殊支持。例如:

Number.parseInt('0o11', 8); // 0

但是,它确实支持将十六进制文字转换为数字。例如,Number.parseInt('0xF') 返回15。因此它知道我们传入的是十六进制数字。

新 Math 方法

Math 对象具有用于数字,三角和按位运算的新方法。

Math.sign(num)

sign方法返回数字的符号。如果我们有一个负数,则返回-1,如果数字为0,则返回0。否则,返回1。

例如,Math.sign(-2) 返回-1,Math.sign(0) 返回0,Math.sign(6) 返回1。

Math.trunc(num)

Math.trunc 删除数字的小数部分并返回它。

例如,Math.trunc(2.1) 返回2,Math.trunc(-2.1) 返回-2,Math.trunc(2.9) 返回2。

Math.log10(num)

log10 方法计算 num 的以10为底的对数。例如,Math.log10(1000) 是3。

Math.hypot(x, y)

hypot 计算三角形的下折线的长度,给定横边和竖边的长度分别为 xy

例如,Math.hypot(4, 3) 是5。

新整数字面量

ES6增加了对二进制和八进制文字的支持。要写一个二进制数字,我们给数字加上 0b 前缀,然后写二进制数字。

例如,我们可以把二进制值3写成 0b11

八进制数字以 0o 为前缀。例如,0o11 是9。

toString 方法需要一个 radix 参数,它可以将一个数字转换为我们想要的基数并返回为字符串。

例如 (9).toString(8) 是11。

总结

ES6为 NumberMath 对象引入了许多属性和方法。此外,我们还有新型的数字面量。现在支持二进制和八进制数。

此外,Number 对象现在具有 parseIntisInteger 方法。我们还可以使用 Number.EPLISON 属性检查某个值是否足够接近0,这是一个非常小的数字。

Number 还具有 isNaNisSafeInteger 方法来检查 NaN 而不进行转换,还有 isSafeInteger 方法来检查整数是否在JavaScript可以接受的范围内。

Math方法包括使用 sign 方法获取数字的符号,使用 trunc 截断数字以及使用 log10 获取以10为底的对数。


来源:https://levelup.gitconnected.com,作者:John Au-Yeung,翻译:公众号《前端全栈开发者》

以上是 你可能会错过的ES6数字和数学功能 的全部内容, 来源链接: utcz.com/a/24455.html

回到顶部