BigInt 解决了 JavaScript 中大整数精度问题,通过 n 后缀或 BigInt() 创建,支持大整数运算但不可与 number 混用,适用于雪花 ID、加密、金融等场景,需注意类型转换、JSON 序列化和浏览器兼容性。
JavaScript 中的数字类型基于 IEEE 754 标准,使用双精度 64 位浮点数表示。这意味着它能安全表示的整数范围是 -2^53 + 1 到 2^53 - 1(即 -9007199254740991 到 9007199254740991)。超出这个范围的整数会丢失精度,导致计算错误。为了解决这个问题,ES2025 引入了 BigInt 类型,专门用于处理任意大的整数。
BigInt 是 JavaScript 的一种原始数据类型,可以通过在整数后添加 n 后缀或调用 BigInt() 函数来创建。
const bigNum = 1234567890123456789012345n;
const bigNum = BigInt("1234567890123456789012345");
BigInt(123) 可以,但 BigInt(9007199254740993) 在传入前可能已不准确BigInt 支持常见的数学运算,如加、减、乘、除和取余,但有几点必须注意:
BigInt(num) 将
number 转为 BigIntBigInt 特别适用于需要高精度整数的场景:
虽然 BigInt 功能强大,但在使用时需留意以下问题:
JSON.stringify(123n) 会报错,需自定义 replacer 函数转为字符串typeof 123n === 'bigint'
基本上就这些。BigInt 解决了 JS 长期以来的大整数精度问题,让开发者能在需要时安全地处理超大整数。只要注意类型隔离和运行环境,就能有效避免意外错误。