zoukankan      html  css  js  c++  java
  • 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

     

     

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

    __________________________________________________________________________________

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

    耶和华是我的牧者,我必不至缺乏。
  • 相关阅读:
    品优购注册页
    品优购详情页---产品细节模块product_detail
    品优购详情页---产品详细信息区域 iteminfo_wrap
    poj 3684
    POJ 2785
    POJ 3185
    POJ 3279
    POJ 3276
    POJ 2566
    POJ 2100
  • 原文地址:https://www.cnblogs.com/lovebing/p/13743625.html
Copyright © 2011-2022 走看看