JavaScript 处理超大整数必须用 BigInt 类型,创建方式为整数字面量加 n 后缀(如 123n)或 BigInt() 构造函数(支持字符串,不支持小数);运算不与 Number 混合,除法只返回整数商;JSON 不支持,需手动转字符串;浏览器和 Node.js 较新版本原生支持。

JavaScript 中处理超过 Number.MAX_SAFE_INTEGER(即 9007199254740991)的整数,必须使用 BigInt 类型,否则会丢失精度或产生错误结果。
如何创建 BigInt
BigInt 不能通过字面量小数或科学计数法创建,只能用整数字面量加后缀 n,或调用 BigInt() 构造函数:
-
123n—— 推荐方式,简洁安全 -
BigInt(123)—— 支持字符串或数字参数,但传入小数会报错:BigInt(123.5)→ TypeError -
BigInt("9007199254740991123456")—— 字符串形式最可靠,尤其处理超长整数时
BigInt 的运算和限制
BigInt 支持常见的算术运算(+、-、*、**、%),但不支持与普通 Number 混合运算,也不支持 / 的小数结果(除法只返回整数商):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- ✅ 正确:
100n + 20n、5n ** 3n、17n % 5n - ❌ 报错:
100n + 20(类型不匹配)、10n / 3n返回3n(自动向下取整,无小数) - ⚠️ 注意:
==可比较BigInt和Number(如10n == 10为true),但===严格相等会返回false
常见使用场景与注意事项
BigInt 主要用于高精度计数、密码学、时间戳(如纳秒级)、大 ID 处理等场景:
立即学习“Java免费学习笔记(深入)”;
- 处理数据库中超过 53 位的 ID(如 MongoDB ObjectId 或 Snowflake ID)时,应统一用
String或BigInt表示,避免转成Number后截断 - JSON 不支持
BigInt,JSON.stringify(123n)会抛出 TypeError;需手动转换,例如:JSON.stringify(obj, (k, v) => typeof v === 'bigint' ? v.toString() : v) - 浏览器兼容性良好(Chrome 67+、Firefox 68+、Safari 14+),Node.js 10.4+ 支持;若需兼容旧环境,可用
big-integer等库替代,但性能较低
类型判断与转换
区分 BigInt 和 Number 需用 typeof:
-
typeof 123n === 'bigint'(唯一方式,instanceof不适用) - 转回普通数字仅在安全范围内可行:
Number(100n)→100;超出Number.MAX_SAFE_INTEGER会丢失精度,不建议 - 转字符串无风险:
123456789012345678901234567890n.toString()

















