js传递long类型存在精度丢失
问题
- 后端传递了一个Long类型的数字,但是前段传递过程中数值变小了
java的long类型是大于number的范围的
- 当我们通过接口将 Java 中的 long 类型的值传递到前端时,如果该值超出了 JavaScript 中 Number 类型的取值范围,JavaScript 会将其转换为科学计数法表示。这导致了 long 类型的值在前端展示时发生了变化。
- 一定就会出现
精度丢失
解决方案
方法一:将 long 类型转换为字符串
long value = 1234567890123456789L;
String stringValue = Long.toString(value);
方法二:分割 long 类型的值
long value = 1234567890123456789L;
int highBits = (int) (value >> 32);
int lowBits = (int) (value & 0xFFFFFFFFL);
参考链接
https://blog.51cto.com/u_16213404/7144246