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

相关推荐
杨利杰YJlio5 小时前
KB5121003更新详解:安全启动证书、AI组件、资源管理器与安装验证
前端·javascript·后端
忙碌碌粒粒橙5 小时前
《用户付一次钱,你的系统为什么处理了两遍:Webhook 重复投递避坑指南》
后端
数字化探索者笔记5 小时前
从零搭建:VMware 银河麒麟V10部署 OceanBase 4.2.5 企业版集中式数据库
后端
西门老铁5 小时前
JWT 是什么?三段式结构、签名原理与 6 个安全坑一次讲透
后端·面试
Codelinghu5 小时前
DeepSeek Harness 出来了,干硬件的我琢磨了一下它到底能干啥
后端
eralong5 小时前
Java 面向对象:继承、多态、接口
java·后端
苏三说技术6 小时前
DeepSeek Harness必装的10个插件
后端
阿弱6 小时前
graph-core 策略合并机制的设计与用法
后端·agent
fatcoder6 小时前
玩转Docker 08 — 实战:容器化真实后端并编排
后端·docker·容器
神奇小汤圆6 小时前
从原始的CRUD 到高并发架构:关于秒杀系统的问题拆解与推演
后端