JS、JSON精度丢失的问题总结

 

最近做的项目,使用了19位int 出现最后两位变成00的问题。

以下为解析和解决方案:

JS19位数的Number型精度丢失问题详解

https://www.cnblogs.com/xuyaoyao/p/9322035.html

 

JSON Bigint 大数精度丢失的背后

https://cloud.tencent.com/developer/article/1477816

 

前端获取Long型数值超过17位精度丢失的解决办法

前端获取Long型数值精度丢失

 

我后端是用的雪花算法生成的20位的唯一ID,我返回给前端的时候,例如:

我返回的是Long类型的,但是前端接收之后精度丢失,导致和我后端给的不一致,解决办法就是使用String类型的。

 

后端传输JSON格式化为String类型的。

 

@JsonFormat(shape = JsonFormat.Shape.STRING)

private Long aliyunOssFileId;

@JsonFormat(shape = JsonFormat.Shape.STRING)作用就是将JSON数据的此字段格式化为字符串类型,保证前端超过17位不会出现精度丢失问题!

前端使用String类型来接收。

aliyunOssFileId: ''

后端生成:674563542816526336

前端接收:674563542816526300

 

由于JavaScript中Number类型的自身原因,并不能完全表示Long型的数字,在Long长度大于17位时会出现精度丢失的问题。

所以,不应该使用ResponseBean<Long>,应该使用ResponseBean<String>,转换成字符串类型的。

参考:https://www.lzhpo.com/article/106

 

 

文章来源:刘俊涛的博客 欢迎关注公众号、留言、评论,一起学习。

__________________________________________________________________________________

若有帮助到您,欢迎点击推荐,您的支持是对我坚持最好的肯定(*^_^*)

posted @ 2020-09-28 10:54  刘俊涛的博客  阅读(2175)  评论(0编辑  收藏  举报