ES11 中的 BigInt 类型:如何构建一个更好的计算机对象

阅读时长 5 分钟读完

在 JavaScript 中,数字类型被用于处理数学计算。然而,由于 JavaScript 中的数字类型是基于浮点数的,因此有时会出现精度问题。为了解决这个问题,ES11 引入了一个新的数据类型:BigInt 类型。

BigInt 类型旨在提供高精度的整数运算, 较之 Number 类型,BigInt 类型在性能上略有劣势,但它提供了更高级别的数学计算功能。而且,BigInt 可以完美地处理超过 Number 类型最大安全数范围的数字。

在本文中,我们将探讨 BigInt 类型的定义、运算和使用,并利用示例代码来解释这些概念的具体实现。

BigInt 类型的定义

BigInt 类型是 ES11 新增的一种 JavaScript 基本数据类型,表示任意长度的整数。BigInt 字面量由后面跟着 "n" 的数字表示。

示例:

注意: 在构造 BigInt 对象时,必须添加 "n" 后缀。

BigInt 类型的取值范围比 Number 类型大得多,可以表示大于 Number.MAX_SAFE_INTEGER 的数值。举个例子,你可以用 BigInt 类型来表示下面这个数字:

其中 Number.MAX_SAFE_INTEGER 是 JavaScript 中的常量,等于 2^53 - 1(即9007199254740991)。因此,BigInt 类型便打破了 JavaScript 数字的极限。

BigInt 类型的运算

BigInt 可以直接进行整数运算,同样可以与 Number 类型进行运算。但是,需要注意的是,在两个不同类型的数字之间进行运算的结果将始终是 BigInt 类型。

示例:

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

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

BigInt 支持常见的算术运算操作符,对应的操作与 Number 类型相同。这里不再赘述

BigInt 对象的操作

BigInt 类型有两种形式:原始 BigInt 和 BigInt 对象。BigInt 对象可以使用 BigInt() 函数来创建。

下面是 BigInt 对象的主要操作:

  • BigInt(): 将指定的值转换为 BigInt 类型。

  • toString(): 将BigInt 值转换为字符串类型。

  • valueOf(): 返回一个表示 BigInt 对象的原始值的基础数字值 。

示例:

使用 BigInt 类型

我们了解了 BigInt 类型的定义和操作之后,现在让我们尝试使用 BigInt 类型来解决在常规数学计算中出现的精度问题。

示例:计算阶乘

在此示例中,我们将使用 BigInt 对象计算阶乘,以展示 BigInt 类型在高精度整数计算方面的实际用途。

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

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

在这个函数中,我们使用了 BigInt 对象来计算大数字的阶乘(如 100),因为它们超出了 Number 类型的最大安全数字的范围。

总结

在本文中,我们学习了 ES11 中新增的 BigInt 类型的定义、运算和使用。BigInt 类型提供了高精度整数计算的解决方法,使得 JavaScript 可以处理超过 Number 类型最大安全数的数字。但在使用 BigInt 类型时必须加上 "n" 后缀,而且需要注意 BigInt 和 Number 之间的运算会始终返回 BigInt 类型。在实际的情况中,我们可以使用 BigInt 类型来解决在常规数学计算中出现的精度问题,在处理大数字阶乘、Fibonacci 数列等算法时特别有用。

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

纠错
反馈