这里 我在java控制台上 输出了id的值
后端返回的id到前端后 后面几位数全部变成0了 问题解决-LMLPHP
但请求到前端后 很明显就不太一样了
后端返回的id到前端后 后面几位数全部变成0了 问题解决-LMLPHP
这个问题比较经典的叫法是 雪花算法生成的ID过长,前端接收精度丢失
原因
前端使用number类型进行接收,number类型的范围小于后台Long类型的范围,出现了精度丢失问题。

简单说 number 类型 接不了那么大的数值 后面的值直接被四舍五入了

这个问题 其实前后端都能处理
前端处理的话 我的文章 vue项目通过json-bigint在前端处理java雪花id过长导致失去精度问题有讲过
但我个人建议还是后端去处理 因为你要想 这个问题本身就是因为你后端不够成熟
因为个人经历不完整导致的 而且这个问题 所以 我觉得我们既然弄出了这个问题 还是由我们自己填上比较好

其实很简单
后端返回的id到前端后 后面几位数全部变成0了 问题解决-LMLPHP
long到了前端转数字类型 有大小限制 但 字符串没有呀

这里 java long转字符串 可以用

long number = 1234567890L;
String str = Long.toString(number);

然后前端传回给你
字符串转 long 可以用

String str = "1234567890";
long number = Long.parseLong(str);

然后 我们运行项目 前端发送请求
后端返回的id到前端后 后面几位数全部变成0了 问题解决-LMLPHP
可以看到 字符串就不会出现这个问题了
后端返回的id到前端后 后面几位数全部变成0了 问题解决-LMLPHP

09-21 09:35