• 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

     

     

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

    __________________________________________________________________________________

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

    耶和华是我的牧者,我必不至缺乏。
  • 相关阅读:
    Redis的基本操作
    Redis下载和安装-windows
    Redis介绍
    day08 网络编程
    day07
    day06
    python day05
    Day04
    windows自带反编译chm文件
    CSS Hack表 各版本IE、chrome、firefox、opera
  • 原文地址:https://www.cnblogs.com/lovebing/p/13743625.html
Copyright © 2020-2023  润新知