📜  JavaScript 中的 BigInt

📅  最后修改于: 2022-05-13 01:56:41.770000             🧑  作者: Mango

JavaScript 中的 BigInt

BigInt 是 JavaScript 中的一个内置对象,它提供了一种表示大于 2 53 -1 的整数的方法。 JavaScript 可以用 Number 原语可靠地表示的最大数字是 2 53 -1,它由MAX_SAFE_INTEGER常量表示。这在需要大量操作的情况下有多种用途。

句法:

BigInt( number ) 
or
Appending n to end of an integer literal

参数:它接受单个整数字面量作为需要表示为 BigInt 的字符串。

返回类型:此方法将给定值作为 BigInt 数据类型返回。

示例:此示例使用 BigInt()函数创建 BigInt。

javascript
// Parameter in decimal format
var bigNum = BigInt(
  "123422222222222222222222222222222222222");
console.log(bigNum);
  
// Parameter in hexadecimal format
var bigHex = BigInt("0x1ffffffeeeeeeeeef");
console.log(bigHex);
  
// Parameter in binary format
var bigBin = BigInt(
  "0b1010101001010101001111111111111111");
console.log(bigBin);


javascript
// Decimal format
var bigNum = 123422222222222222222222222222222222222n
console.log(bigNum)
  
// Hexadecimal format
var bigHex = 0x1ffffffeeeeeeeeefn
console.log(bigHex)
  
// Binary format
var bigBin = 0b1010101001010101001111111111111111n
console.log(bigBin)


javascript
// Array consisting of both
// Number and BigInt
var arr = [4, 2, 5n, 2n]
  
// Sorting the array
arr.sort()
  
console.log(arr)  // [2, 2n, 4, 5n]


输出:

123422222222222222222222222222222222222n
36893488074118328047n
11430854655n

示例:此示例通过在数字末尾附加 n 来创建 BigInt。

javascript

// Decimal format
var bigNum = 123422222222222222222222222222222222222n
console.log(bigNum)
  
// Hexadecimal format
var bigHex = 0x1ffffffeeeeeeeeefn
console.log(bigHex)
  
// Binary format
var bigBin = 0b1010101001010101001111111111111111n
console.log(bigBin)

输出:

123422222222222222222222222222222222222n
36893488074118328047n
11430854655n

BigInt 其他类型的比较: BigInt 在某些方面与 Number 相似,但是它不能与内置 Math 对象的方法一起使用,也不能与 Number 的实例在操作中混合使用。

示例:将 BigInt 与数字进行比较。

typeof 100n === 100        // Returns false
typeof 100n ==  100        // Returns true due to coercion
typeof 100n === 'bigint'   // Returns true
100n < 101                 // Returns true due to coercion

排序:一个数组可以同时保存原始数据类型和 BigInts。当数组中同时存在正常的 Number 和 BigInt 值时,这允许sort()方法工作。

例子:

javascript

// Array consisting of both
// Number and BigInt
var arr = [4, 2, 5n, 2n]
  
// Sorting the array
arr.sort()
  
console.log(arr)  // [2, 2n, 4, 5n]

输出:

[2, 2n, 4, 5n]

使用建议:由于 BigInt 的实现,不建议将以下应用程序与 BigInt 一起使用:

  1. 强制转换: Number 和 BigInt 之间的强制转换会导致精度损失,建议仅在合理预期大于 253 的值时才使用 BigInt,而不是在两种类型之间进行强制转换。
  2. 密码学: BigInt 支持的操作不是常数时间。 BigInt 因此不适用于密码学。

支持的浏览器:支持 BigInt 方法的浏览器如下:

  • 铬合金
  • 边缘
  • 火狐
  • 歌剧