跳到主内容

开发计算 · 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 款免费在线计算器。

返回术语表