ES11 中的 BigInt 类型和数字对象:如何简单地做计算

阅读时长 6 分钟读完

ES11 引入了一个新的数据类型 BigInt,用于表示大数。在 JavaScript 中,数字的大小最多可以表示到 2^53-1,而 BigInt 可以表示更大的数字,也就是超出了 Number 表示范围的数字。

BigInt 类型的基本使用

BigInt 类型可以通过在数字后加一个 n 的方式创建,例如:

可以通过 typeof 运算符来检查一个变量是否是 BigInt 类型:

BigInt 类型的运算

BigInt 类型可以进行大部分的运算操作,与普通数字类型的操作是一样的。例如加、减、乘、除、求余等运算符,和比较运算符相同。需要注意的是,不能使用相等运算符 == 比较 BigInt 和 Number 或者 BigInt 和 String 类型的值是否相等,需要使用 === 运算符或者 BigInt 自身的 equals() 方法。

数字对象的使用

在 ES6 中,JavaScript 提供了数字对象 Number,用于处理一些数字相关的计算和操作。例如 Math 对象中的一些方法就是用于处理数字的。ES11 中又引入了一些新的 数字对象方法,下面我们来看一下这些方法的使用。

Number.parseInt() 和 Number.parseFloat()

这两个方法和全局的 parseInt() 和 parseFloat() 方法是一样的,都是用于将一个字符串解析成整数或者浮点数。不同的是,全局方法是挂载在 window 或者 global 对象下的,而这两个方法是挂载在 Number 对象下的。

Number.isFinite()

这个方法用于判断一个值是否是有限数,如果是则返回 true,否则返回 false。注意,Infinity、-Infinity、NaN 不是有限数,返回 false。

Number.isInteger()

这个方法用于判断一个值是否为整数,如果是,则返回 true,否则返回 false。

Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER

JavaScript 中安全的整数范围是 -2^53 到 2^53-1,超过这个范围,计算会出现精度误差。Number 对象提供了两个常量来表示这个范围的最大值和最小值。

总结

ES11 中引入的 BigInt 类型和 Number 对象方法,为处理数字类型的计算和运算提供了方便的方法。在实际编写代码的过程中,要注意使用合适的类型和方法,以保证运算的正确性和精度。

示例代码

-- -------------------- ---- -------
----- - - --------------------------------
----- - - -----------------------------------------
------------- - --- -- --------------------------------
------------- - --- -- ------------------------------------------------------------------------------
------------- - --- -- -----
------------- --- --------------------------------- -- ----
------------------------------------------------------- -- ----

------------------------------------ -- ---
----------------------------------------- -- ------
---------------------------------- -- ----
--------------------------------------- -- -----
---------------------------------- -- -----
----------------------------------- -- ----
-------------------------------------- -- -----
------------------------------------- -- ----------------
------------------------------------- -- -----------------

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646c6846968c7c53b0b63177

纠错
反馈