紧急求助,后台long型(字段是bigint)到页面,丢失精度的问题

@JFinal

事情是这样的,数据库里主键字段采用雪花算法生成ID,生成的ID举例:755081777533419520

字段类型采用bigint,生成的Model自动采用Long类型,这一切看起来都很顺利。

目前和安卓,IOS对接也都没发现问题。

但现在网页里需要管理数据,发现js里number有精度限制,后台的755081777533419520数字到了页面解析成JSON对象后

ID成员就变成了755081777533419500了,我试了很多个ID,基本上就是后两位全部变成00,这就让我抓瞎了。查了网上说,只能是后台把这个Long转成字符串。我是直接renderJson(Model),或则renderJson(Record)。怎么样处理一下,能让我自动把Long转成字符串?

评论区

flyinkeke

2020-09-14 22:49

js的number类型最大值(9007199254740992)
即2的53次方,为9007199254740992。如果超过这个值,那么js会出现不精确(丢失精度)的问题。这个值为16位。

flyinkeke

2020-09-14 22:52

雪花算法的10位的数据机器位对一般的项目来说纯粹是浪费,可以改一下,以缩短长度。这有一个现成的;https://www.liaoxuefeng.com/article/1280526512029729

zzutligang

2020-09-15 09:06

@flyinkeke 经过一夜的纠结和评估,还是觉得把id改成varchar了。坑死人的js!谢谢你的回复。我已经按你那个连接把雪花算法改一下了。

zzutligang

2020-09-15 09:07

这个问题就到这里了!我也是早上看到这里以前有人问了这个问题。我也是一时着急,才发了这个反馈!