前后端联调时,发现后端传输的id 数据1795733299368411138,到了前端就变成了1795733299368411000,JavaScript默认会将这些数值视为Number类型处理,这意味着超过Number类型取值范围的整数在JavaScript中无法精确表示,从而导致精度丢失。
java 中的Long类型取值范围是:
- 最小值:-9,223,372,036,854,775,808 (即 -2^63)
- 最大值:9,223,372,036,854,775,807 (即 2^63 - 1)
js 中的Number类型取值范围是:
- 最小整数:-9,007,199,254,740,992(即 -2^53-1)
- 最大整数:9,007,199,254,740,992 (即 2^53-1)
解决办法:
在后端id字段加上这一行注解,传输时转为字符串,就可以解决问题了
@JsonSerialize(using = ToStringSerializer.class)
同时《阿里巴巴java开发手册》中也提到