数据设计使用bigint 类型作为主键,Java后台使用Long 类型进行接收。json输出到前端显示时发现精度丢失了,查看json数据是没有问题的。后经查询问题原因如下:
1、javascript 的 Number 类型最大长度是16位;
最大整数是 Math.pow(2, 53),十进制即 9007199254740992,如果超过这个值,那么js会出现不精确的问题。这个值为16位。
2、mysql 使用bigint 类型长度是20位;
解决办法:
方法一:Java 后台 更换类型,使用String类型替换Long类型
方法二:推荐使用,Java传值给前端进行JSON序列化时,将Long 类型转成string 类型序列化。
使用 @JsonSerialize(using = ToStringSerializer.class) 注解import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@JsonSerialize(using = ToStringSerializer.class)
private Long caId;
com.fasterxml.jackson.core
jackson-databind
2.9.7
spring-boot-starter-web会自动导入该依耐包
标签:
Long精度丢失
JsonSerialize
ToStringSerializer
出处:https://www.meihaocloud.com.com/b_397.html , 欢迎转载,请在文章页标出原文连接 !