雪花算法生成的ID到前端后精度丢失

最近将id改为雪花算法方式生成,后端使用雪花算法生成id,在返回给前端的时候没有问题,但是在前端使用id反查数据的时候始终查询不到数据。

经过数据跟踪最终定位到是浏览器的问题,因为浏览器无法解析太长的数字,最终导致id精度丢失。

在浏览器的console中验证,可以看到最后几位发生了变化。

例如生成的id是1594605819398193154

而前端展示的为1594605819398193200

这是因为JS是弱语言,前端接收数字类型参数为number

最大接收长度为16位,超出长度则会丢失精度

而JAVA的Long类型长度为19位,所以传输到前端的后三位精度丢失

所以我们解决该问题的思路就是:把java里的Long类型转换为String返回给前端

你可能感兴趣的:(前端)