开发计算 · BigInt & Numeric Precision · 更新于 2026-10-25
大数(BigInt 与精度上限)是什么:定义、公式与实例
定义
JavaScript 的 Number 是 64 位双精度浮点:1 位符号+11 位指数+52 位尾数——能精确表示的整数上限是 2^53−1。订单号、雪花 ID(64 位)超过此限,JSON.parse 后末位会被「四舍五入」——后端生成的 id=1234567890123456789 到前端变成 …790。解法三选:BigInt 类型(9007199254740993n)、字符串传输(后端序列化 id 为 string)、分片传输。金融计算同理:0.1+0.2≠0.3(二进制无法精确表示十分之一),金额一律用「分」为单位的整数或 decimal 库。
公式
Number.MAX_SAFE_INTEGER = 2^53 − 1 = 9007199254740991
数值实例
JSON.parse('{"id":9007199254740993}').id → 9007199254740992(末位被吞);后端返回字符串 "9007199254740993" 则无损。
常见误区
「加一位小数就能修浮点误差」——0.1+0.2-0.3=5.5e-17 的根源是二进制表示,任何十进制小数位都无法根除,必须整数化或 decimal 运算;「BigInt 可以混用 Number」——JS 中 BigInt 与 Number 不能直接四则运算(TypeError),必须显式转换。
配套计算器
相关术语
继续探索
浏览完整术语表,或回到首页使用 1435 款免费在线计算器。
返回术语表