javascript中bigint运算要求所有操作数均为bigint类型,混用number会报错;创建需用后缀n或bigint()构造函数,不可用浮点数;算术运算需类型一致,比较时===严格拒绝跨类型,json序列化前须转字符串。

JavaScript 中处理 BigInt 类型进行大数运算,核心是**所有操作数都必须是 BigInt,不能混用普通数字(Number)**,否则会直接报错。这是最常踩的坑。
创建 BigInt 的正确方式
不能用小数点、科学计数法,也不能从浮点数转换:
- ✅ 正确:末尾加
n——123456789012345678901234567890n - ✅ 正确:用
BigInt()构造函数 ——BigInt("123456789012345678901234567890") - ❌ 错误:
BigInt(123.45)(抛出RangeError) - ❌ 错误:
12345678901234567890.123n(语法错误)
基础算术运算需统一类型
加减乘除取余等操作符(+、-、*、/、%)只支持同为 BigInt 的操作数:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
100n + 200n✅ 返回300n -
100n + 200❌ 报错TypeError: can't convert BigInt to number - 若需混合计算,先转成
BigInt:100n + BigInt(200) - 除法结果自动向下取整(类似
Math.floor),不保留小数:7n / 2n === 3n
比较与逻辑运算要注意兼容性
== 和 === 可以安全比较 BigInt 与 BigInt;但与 Number 比较时,== 允许隐式转换(不推荐),=== 严格拒绝:
-
100n === 100n✅ -
100n == 100✅(返回true,但有潜在精度风险) -
100n === 100❌(false,类型不同) -
100n > 99✅(可与Number比较大小,自动转换) - 但
100n > 99.5❌(TypeError,小数无法转BigInt)
常用场景下的实用建议
处理时间戳、哈希值、加密 ID 或金融大整数时:
- 读取字符串形式的大数(如 API 返回的
"9007199254740991999999"),务必用BigInt(str),别用Number解析 - 避免在数组或对象中“混存”
Number和BigInt,容易引发意外类型错误 - JSON 不支持
BigInt,序列化前需手动转字符串:JSON.stringify({id: myId.toString()}) - 需要小数运算?
BigInt不行——得用第三方库(如decimal.js)或自己模拟定点运算
不复杂但容易忽略:只要记住“全 n 起手,全 BigInt 出手”,大数运算就稳了。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










