后端Long类型传给前端显示丢失精度
目录
后端Long类型传给前端显示丢失精度
目录
问题描述
后端服务controller传给前端Long类型的字段,出现丢失精度问题。
原数据18位,例如:157276510349800005
private Long customerId;
传给前端,页面显示为:157276510349800000
测试第一步
在本地测试,Long类型在本地输出正常,可知后端传参数正常
public static void main(String[] args) {
Long id = 157276510349800005L;
System.out.println(id);
}
//输出结果:157276510349800005
测试第二步
前端接受出现精度丢失
原因
js获得后端返回long类型时,会存在数据丢失的问题
JS内置有32位整数,而 number类型的安全整数是53位 。如果超过53位,则精度会丢失。正如现在后台传来一个64位的Long型整数,因此超过了53位,所以后台返回的值和前台获取的值会不一样。
解决
后端传给前端时修改类型为String,toString()