You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么console.log打印大数字11321144241322243122时会出现精度异常?

问题原因

这是JavaScript语言的内置特性导致的精度丢失问题,和Node.js、浏览器的运行环境无关:

  • JavaScript中的所有数字均以IEEE 754 双精度64位浮点数格式存储,该格式仅能精确表示范围在 -(2^53 - 1) 到 2^53 - 1 之间的整数,这个范围也被叫做安全整数范围,对应JS内置常量Number.MIN_SAFE_INTEGER和Number.MAX_SAFE_INTEGER。
  • 你尝试打印的数字11321144241322243122远大于2^53 -1(值为9007199254740991),已经超出安全整数范围,JS会自动匹配最近的可表示的浮点数来存储该数字,因此会出现末尾几位偏差的情况,最终打印出来的就是近似值11321144241322244000。
解决方案

如果需要处理超大整数且不丢失精度,可以用两种方式处理:

  • 直接将超大整数转为字符串类型存储、传输、打印,避免自动转为Number类型出现精度丢失
  • 使用ES2020新增的BigInt类型,在数字末尾加n后缀声明为大整数即可,示例:console.log(11321144241322243122n)可精确输出原数字。

内容的提问来源于stack exchange,提问作者user15048106

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:09:01