今天上课让我回忆起来了很久之前踩过的一个坑。
直接上图
后端返回的值与前端不一致!
这种情况我也是第一次遇到。当时的做法是把Long转换成了String类型传给前端。
为什么会出现这种情况呢?
原来Java 服务端如果直接返回 Long 整型数据给前端,JS 会自动转换为 Number 类型(注:此类型为双精度浮点数,表示原理与取值范围等同于 Java 中的 Double)。Long 类型能表示的最大值是 2 的 63 次方-1,在取值范围之内,超过 2 的 53 次方 (9007199254740992)的数值转化为 JS 的 Number 时,有些数值会有精度损失。这就造成了前后端返回结果不一致。



