• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共299篇

    前端 - Javascript

关闭

返回栏目

关闭

返回前端 - Javascript栏目

98 - 内置对象 - BigInt 对象 - 大整数类型的表示与运算

作者:

贺及楼

成为作者

更新日期:2025-02-21 18:58:15

前端 - Javascript 《内置对象 - BigInt 对象 - 大整数类型的表示与运算》

在 JavaScript 中,处理数值是一项常见的任务。然而,在 ES2020 之前,JavaScript 只有一种数值类型——Number,它遵循 IEEE 754 双精度 64 位浮点数标准,这就导致它能精确表示的整数范围是有限的。为了解决这个问题,ES2020 引入了一种新的原始数据类型:BigInt,它可以表示任意大的整数。

1. 创建 BigInt

1.1 使用后缀 n

在数字后面直接添加 n 就可以将其转换为 BigInt 类型。

  1. const bigIntNum = 12345678901234567890n;
  2. console.log(typeof bigIntNum); // 输出: "bigint"

1.2 使用 BigInt() 构造函数

也可以使用 BigInt() 函数将其他类型的值转换为 BigInt

  1. const num = 123;
  2. const bigIntFromNum = BigInt(num);
  3. console.log(bigIntFromNum); // 输出: 123n
  4. const str = "98765432109876543210";
  5. const bigIntFromString = BigInt(str);
  6. console.log(bigIntFromString); // 输出: 98765432109876543210n

2. 基本运算

BigInt 支持常见的数学运算,包括加法(+)、减法(-)、乘法(*)、除法(/)、取余(%)和幂运算(**)。

2.1 加法

  1. const a = 10n;
  2. const b = 20n;
  3. const sum = a + b;
  4. console.log(sum); // 输出: 30n

2.2 除法

需要注意的是,BigInt 除法会向下取整。

  1. const dividend = 15n;
  2. const divisor = 2n;
  3. const quotient = dividend / divisor;
  4. console.log(quotient); // 输出: 7n

2.3 幂运算

  1. const base = 2n;
  2. const exponent = 10n;
  3. const result = base ** exponent;
  4. console.log(result); // 输出: 1024n

3. 比较运算

BigInt 可以使用比较运算符(如 <><=>======)进行比较。

  1. const x = 10n;
  2. const y = 20n;
  3. console.log(x < y); // 输出: true
  4. console.log(x === 10n); // 输出: true

4. 与 Number 类型的区别

4.1 精度问题

Number 类型在处理大整数时会出现精度丢失的问题,而 BigInt 可以精确表示任意大的整数。

  1. const largeNumber = 9007199254740991;
  2. const largeNumberPlusOne = largeNumber + 1;
  3. console.log(largeNumber === largeNumberPlusOne); // 输出: true
  4. const largeBigInt = 9007199254740991n;
  5. const largeBigIntPlusOne = largeBigInt + 1n;
  6. console.log(largeBigInt === largeBigIntPlusOne); // 输出: false

4.2 不能混合运算

BigIntNumber 类型不能直接进行混合运算,需要先进行类型转换。

  1. const num = 10;
  2. const bigInt = 20n;
  3. // 以下代码会报错
  4. // const wrongResult = num + bigInt;
  5. const correctResult = BigInt(num) + bigInt;
  6. console.log(correctResult); // 输出: 30n

5. 应用场景

5.1 加密算法

在加密算法中,经常需要处理非常大的整数,BigInt 可以满足这种需求。

5.2 金融计算

金融领域的计算可能涉及到非常大的金额,使用 BigInt 可以避免精度丢失。

总结

特性 描述
创建方式 可以使用后缀 nBigInt() 构造函数
基本运算 支持加法、减法、乘法、除法、取余和幂运算
比较运算 可以使用常见的比较运算符
Number 区别 Number 有精度限制,BigInt 可精确表示大整数;两者不能直接混合运算
应用场景 加密算法、金融计算等

BigInt 为 JavaScript 处理大整数提供了强大的支持,在需要精确表示大整数的场景中,它是一个非常有用的工具。开发者在使用时需要注意其与 Number 类型的区别,避免出现类型不匹配的错误。