0
点赞
收藏
分享

微信扫一扫

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


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

以下为解析和解决方案:

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


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​​

__________________________________________________________________________________

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

你要保守你心,胜过保守一切。

作者:刘俊涛的博客​


举报

相关推荐

0 条评论