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 一起使用:
- 强制转换: Number 和 BigInt 之间的强制转换会导致精度损失,建议仅在合理预期大于 253 的值时才使用 BigInt,而不是在两种类型之间进行强制转换。
- 密码学: BigInt 支持的操作不是常数时间。 BigInt 因此不适用于密码学。
支持的浏览器:支持 BigInt 方法的浏览器如下:
- 铬合金
- 边缘
- 火狐
- 歌剧