泰安网站建设推广,wordpress阿里云图片不显示不出来,单页面零售网站,前端网站做多语言前言
惯例#xff0c;收到兄弟求救#xff0c;关于long类型丢失精度的问题#xff1a; 存在一个初学者不会#xff0c;就会有第二个初学者不会#xff0c;所以我出手。 正文 不多说#xff0c;开搞。 如题#xff0c; 后端返回的数据 给到 前端#xff0c; Long类型数…前言
惯例收到兄弟求救关于long类型丢失精度的问题 存在一个初学者不会就会有第二个初学者不会所以我出手。 正文 不多说开搞。 如题 后端返回的数据 给到 前端 Long类型数据太长导致精度丢失。 复现示例 比如我们写个接口
我们特意去把 Long类型 14位 到 20位的数据都 塞到返回值里面 RequestMapping(/test)ResponseBodypublic TestDTO test(){TestDTO testDTOnew 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(usingToStringSerializer.class) 看看效果 好了该篇就到这。