服务器返回前端Long类型精度丢失

数据类型差异

JavaScript 里只有一种数值类型 Number,它遵循 IEEE 754 双精度 64 位浮点数标准。该标准将 64 位划分为不同部分,其中 1 位是符号位,11 位是指数位,52 位是尾数位。整数在这种存储方式下,能精确表示的最大安全整数是 2^53 - 1,也就是 9007199254740991。一旦数值超过这个范围,就无法精确表示,从而造成精度丢失。

数值范围问题

Java 等后端语言的 long 类型通常是 64 位整数,其取值范围为 -2^632^63 - 1,远大于 JavaScript 中 Number 类型能精确表示的范围。当后端返回的 long 类型数值超出了 JavaScript 的最大安全整数范围,前端在接收和处理时,就会自动将其转换为 Number 类型,这样就会丢失精度。

解决方案1

可以通过@JsonSerialize注解,这个注解会将Long类型先转换成String再进行序列化,

解决方案2

通过配置json序列化器自动转换

相关推荐
洛神灬殇2 分钟前
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 时间事件处理部分)
redis·后端
DataFunTalk9 分钟前
Foundation Agent:深度赋能AI4DATA
前端·后端·算法
楽码12 分钟前
一文看懂隐藏功能!语言的逃逸分析
后端·go·编程语言
RunsenLIu21 分钟前
基于Django实现的图书分析大屏系统项目
后端·python·django
Chandler2432 分钟前
Go:低级编程
开发语言·后端·golang
Asthenia041239 分钟前
ArrayList与CopyOnWriteArrayList源码深度解析及面试拷打
后端
Asthenia041239 分钟前
深入解析String、StringBuilder、StringBuffer与final修饰对象的问题
后端
Asthenia041243 分钟前
Java数据类型的四类八种与拆装箱底层原理
后端
郭萌6961 小时前
Docker 安装陀螺匠教程
后端
u0103731061 小时前
Django REST Framework (DRF)
后端·python·django