当前位置: 首页 > article >正文

Springboot Long类型数据太长返回给前端,精度丢失问题 复现、解决

前言

惯例,收到兄弟求救,关于long类型丢失精度的问题:

存在一个初学者不会,就会有第二个初学者不会,所以我出手。

正文

不多说,开搞。



如题, 后端返回的数据 给到 前端, Long类型数据太长导致精度丢失。

复现示例



比如我们写个接口:

我们特意去把 Long类型 14位 到 20位的数据都 塞到返回值里面
 

    @RequestMapping("/test")
    @ResponseBody
    public TestDTO test(){
        TestDTO testDTO=new TestDTO();
        testDTO.setNumStr("12345678901234568901234567890123456890");
        testDTO.setNum14(12345678901234L);
        testDTO.setNum15(123456789012345L);
        testDTO.setNum16(1234567890123456L);
        testDTO.setNum17(12345678901234567L);
        testDTO.setNum18(123456789012345678L);
        testDTO.setNum19(123456789012345689L);
        testDTO.setNum20(1234567890123456890L);
        return testDTO;
    }

TestDTO.java:
 

public class TestDTO {

    private String numStr;

    private Long num14;
    private Long num15;
    private Long num16;
    private Long num17;
    private Long num18;
    private Long num19;
    private Long num20;
  
    //省略set、get
}

这时候前端调用看看效果,可以看到出现了精度丢失的场景:

原因

 js数字的精度是有限的,Java的Long类型的数字超出了JavaScript的处理范围。
 内部只有一种数字类型Number,双精度64位格式存储,即使整数也是如此。
 最大的数值应该是2的53次方-1,十进制是【9007199254740991】,16位。
 所以说超过16位,那么如果属于Number类型去解析的,就会丢失精度。

解决方案:

@JsonSerialize(using=ToStringSerializer.class)



 看看效果:

 好了,该篇就到这。


http://www.kler.cn/a/2660.html

相关文章:

  • 通过 route 或 ip route 管理Linux主机路由
  • 云安全博客阅读(三)
  • C语言的语法
  • 在JavaScript开发中,如何判断对象自身为空?
  • 高山旅游景区有效降低成本,无人机山下到山上物资吊运技术详解
  • 监听器与RBAC权限模型
  • Oracle数据库从入门到精通系列之一:定义数据库和实例
  • DevOps系列文章 - K8S构建Jenkins持续集成平台
  • 一文了解Jackson注解@JsonFormat及失效解决
  • 功能测试转型测试开发年薪27W,又一名功能测试摆脱点点点,进了大厂
  • 字节跳动测试岗面试记:二面被按地上血虐,所幸Offer已到手...
  • webpack——使用、分析打包代码
  • python中socket智能调结用户连接数
  • 2万字带你精通MySQL索引
  • Vue:路由管理模式
  • 编写软件界面的方式
  • maven setting 配置
  • 制作简单进销存管理系统(C#)
  • 大数据专业应该怎么学习
  • python --获取内网IP地址
  • libvirt零知识学习5 —— libvirt源码编译安装(3)
  • ring_log环形日志-6M缓冲区_proc接口
  • Linux上用Samba建立共享文件夹并通过Linux测试
  • 蓝桥杯每日一真题——[蓝桥杯 2021 省 B] 杨辉三角形(二分+规律)
  • oracle查询表空间大小以及每个表所占空间的大小
  • 已解决AttributeError:module tensorflow no attribute app异常的正确解决方法,亲测有效!!!