javascript中bigint用于处理超大整数以避免精度丢失,需用字面量(如123n)或bigint()构造函数(推荐传字符串),运算时禁止与number混合,支持+、-、*等但/会截断,比较需注意类型,判断用typeof==='bigint'。

JavaScript 中用 BigInt 处理超大整数,核心是避免精度丢失——普通 Number 类型安全上限是 2<sup>53</sup> - 1(即 9007199254740991),超过就会四舍五入。而 BigInt 支持任意精度的整数运算,但必须注意类型隔离和语法细节。
如何创建 BigInt
不能用 new BigInt()(已弃用),只能用两种方式:
- 字面量写法:在整数末尾加
n,例如123n、0n、-456n - 构造函数:传入字符串或数字(推荐字符串,避免 Number 精度污染),例如
BigInt("9007199254740992");传数字如BigInt(123)仅限安全整数范围内
BigInt 的基本运算规则
支持 +、-、*、**、% 和位运算(&、|、^、、<code>>>、>>>),但有严格限制:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 不能与
Number混合运算,否则报TypeError,例如1n + 2❌ - 必须显式转换:用
BigInt(2)或2n统一类型,例如1n + BigInt(2)✅ 或1n + 2n✅ - 不支持
/运算符的小数结果(会向零截断),例如5n / 2n得2n,不是2.5
比较和类型判断注意事项
比较操作符(==、===、> 等)可直接用于 BigInt 和 Number,但行为需留意:
-
1n === 1→false(类型不同) -
1n == 1→true(抽象相等会转换,但不推荐依赖) -
1n > 0.5→true(关系比较允许隐式转换) - 判断类型用
typeof value === 'bigint',不是instanceof
实际使用建议
处理大数计算时,保持类型一致性最关键:
- 从源头用字符串初始化:比如解析 JSON 中的大 ID,先转字符串再调
BigInt(str) - 避免中间转
Number:尤其不要用parseInt或+转换,会丢精度 - 输出显示时转回字符串:
myBigNum.toString(),不能用String(myBigNum)(虽可行但不直观) - 与 JSON 交互需手动编解码,因为 JSON 不原生支持
BigInt
不复杂但容易忽略:只要记住 “n 尾缀” 和 “不混 Number”,就能安全用好 BigInt。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










