服务器返回前端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序列化器自动转换

相关推荐
一块plus25 分钟前
深度详解 Revive 和 Precompile 技术路径
后端·设计模式·架构
iOS开发上架哦29 分钟前
没有Mac如何完成iOS 上架:iOS App 上架App Store流程
后端
晴空月明30 分钟前
分布式系统高可用性设计-负载均衡与容错机制深度解析
后端
Honyee43 分钟前
java使用UCanAccess操作Access
java·后端
八苦1 小时前
留个VKProxy性能测试记录
后端
SimonKing1 小时前
你的Redis分布式锁还在裸奔?看门狗机制让锁更安全!
java·后端·程序员
追逐时光者1 小时前
一个 .NET 开源、免费、以社区为中心的单元测试框架
后端·.net
kangkang-2 小时前
PC端基于SpringBoot架构控制无人机(二):MavLink协议
java·spring boot·后端·无人机
麦兜*3 小时前
Spring Boot秒级冷启动方案:阿里云FC落地实战(含成本对比)
java·spring boot·后端·spring·spring cloud·系统架构·maven
喷火龙8号3 小时前
MSC中的Model层:数据模型与数据访问层设计
后端·架构