如何解决 JavaScript 大整数精度丢失问题
关于这个大精度丢失问题,一开始我还没在意,直到上班碰到了这个问题,当时记得在处理后端返回的大整数拿到一个超过 js 精度的 id 时,怎么传值都对不上,后面通过打印检查对比发现,我拿到的 id 跟我所获取到的不一致,当时还不知道是什么情况,后面上网搜索才知道这是属于一个精度丢失问题。
那原因是什么呢?
经过查询知道 JS 的 Number 类型遵循 IEEE754 标准,最大安全整数是 2^53 - 1。
再大的数字会被强制四舍五入,导致精度丢失。
那我为了避免这种情况,后续在 JSON 解析和对象处理阶段,手动把大整数转换为字符串。下面是我这边写的一个工具方法。
问题示例:精度丢失 #后端返回: