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

时间: 2020-06-17阅读: 263标签: 数字

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


新 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_INTEGER 和 Number.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 计算三角形的下折线的长度,给定横边和竖边的长度分别为 x 和 y。

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



新整数字面量

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

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

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

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

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


总结

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

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

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

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


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


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/9309

javascript如何判断值是否是数字?

javascript如何判断一个值是否是数字?下面本篇文章就来给大家介绍一下使用javascript判断一个值是否是数字的方法,sNaN() 函数用于检查其参数是否是非数字值。如果 值x 是特殊的非数字值 NaN

JS数字精度

最近在看计算机组成原理的浮点数部分,突然想起之前看过的一道快手面试题,为什么JS中0.1+0.2不等于0.3,应该如何解决?这里我们可以借这道题来说一下JS的精度问题

javaScript保留三位有效数字

在之前的文章中有讲过保留两位小数的实现,最近在开发在开发活动页面时,依旧是展示参赛作品的点赞数。当点赞数过万时,显示三位有效数字来展示点赞数,例如:1.56万、23.1万等

JS实现数字金额转大写金额

由于js的弱精度,在计算小数相加时总是会丢失精度,JS将金额数字转大写的方法封装,数字大写对照表;下面为大家整理些常用的实现方法。

Js中的无穷数(Infinity)

Infinity(无穷大)在 JS 中是一个特殊的数字,它的特性是:它比任何有限的数字都大,如果不知道 Infinity, 我们在一些运算操作遇到时,就会觉得很有意思。现在我们来看看 JS 中的Infinity 属性,了解用例并解决一些常见的陷阱。

Js对数字类型的支持

由于 JavaScript 采用 IEEE 754 标准,数值存储为64位双精度格式,数值精度最多可以达到 53 个二进制位(1 个隐藏位与 52 个有效位)。如果数值的精度超过这个限度,第54位及后面的位就会被丢弃.

javascript如何判断两个数是否整除?

JavaScript判断两个整数(a,b,a>b)的整除时,可以用Number.isInteger(a/b)或者a%b==0来进行判断,但是如果其中涉及到小数就会导致计算过程中精度丢失。

Js浮点型数字误差引发的问题

JavaScript 中浮点型精度的误差,是非常基础但是却又经常不被重视的问题。文中分享的方案,足以覆盖项目中的所有情况,但如果用在其它地方或项目中,在一些极端情况下可能会有问题。

JS判断值是否是数字

isNaN()的缺点就在于 null、空格以及空串会被按照0来处理;对于空数组和只有一个数值成员的数组,isNaN返回false。校验只要是数字(包含正负整数,0以及正负浮点数)就返回true

JS中 Number()方法的两种用法

JS中,调用Number()主要有两种方式,一是作为一个 function 将任意类型的数据转换成数值,二是作为一个类,通过new 生成一个数值对象。其中第一种方式更常用。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广