JS BigInt 大整数
学习BigInt · 难度:入门 · +10XP
JavaScript BigInt 大整数详解
在 JavaScript 中,普通的 Number 类型使用 64 位浮点数存储,安全整数范围是 ±(253 - 1)。BigInt 可以表示任意大的整数,突破了这一限制。
创建 BigInt
有两种方式创建 BigInt:
- 在整数后面加字母
n - 使用
BigInt()构造函数
// 方式一:加 n 后缀
const big1 = 9007199254740991n;
const big2 = 123456789012345678901234567890n;
// 方式二:使用 BigInt 构造函数
const big3 = BigInt("12345678901234567890");
// 注意:BigInt 和 Number 不能混合运算(会报 TypeError)
BigInt 的算术运算
| 运算符 | 示例 | 说明 |
|---|---|---|
| 加法 + | 100n + 20n | 正常加法 |
| 减法 - | 100n - 20n | 正常减法 |
| 乘法 * | 100n * 2n | 正常乘法 |
| 除法 / | 100n / 3n | 向下取整(截断小数) |
| 取余 % | 100n % 3n | 取余数 |
| 幂 ** | 2n ** 1024n | 可以计算超大指数 |
const a = 100n;
const b = 3n;
console.log(a / b); // 33n(注意:小数部分被截断!)
console.log(a % b); // 1n
console.log(2n ** 100n); // 1267650600228229401496703205376n
BigInt 的比较和转换
BigInt 使用严格相等 === 时,和 Number 不是同一类型:
console.log(1n === 1); // false(类型不同)
console.log(1n == 1); // true(宽松比较会转换)
// 转换为 Number
const big = 12345n;
const num = Number(big); // 12345(超出安全范围会丢失精度)
实际应用场景
- 金融计算:需要精确保留大数值,避免浮点数精度丢失
- 密码学:处理大素数、哈希值等超大整数
- 科学计算:天文数字、宇宙距离等超大数值
- 高精度时间戳:纳秒级时间计算
// 场景示例:使用 BigInt 处理超大 ID
const userIds = [
123456789012345678n,
987654321098765432n,
111111111111111111n
];
const total = userIds.reduce((sum, id) => sum + id, 0n);
console.log("用户ID总和:", total);