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

相关推荐
sheji34162 小时前
【开题答辩全过程】以 基于SpringBoot的疗养院管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
短剑重铸之日3 小时前
《设计模式》第六篇:装饰器模式
java·后端·设计模式·装饰器模式
码界奇点4 小时前
基于Flask与OpenSSL的自签证书管理系统设计与实现
后端·python·flask·毕业设计·飞书·源代码管理
代码匠心5 小时前
从零开始学Flink:状态管理与容错机制
java·大数据·后端·flink·大数据处理
分享牛5 小时前
LangChain4j从入门到精通-11-结构化输出
后端·python·flask
知识即是力量ol6 小时前
在客户端直接上传文件到OSS
java·后端·客户端·阿里云oss·客户端直传
闻哥6 小时前
深入理解 Spring @Conditional 注解:原理与实战
java·jvm·后端·python·spring
qq_256247057 小时前
Google 账号防封全攻略:从避坑、保号到申诉解封
后端
MX_93598 小时前
使用Spring的BeanFactoryPostProcessor扩展点完成自定义注解扫描
java·后端·spring
弹简特8 小时前
【JavaEE05-后端部分】使用idea社区版从零开始创建第一个 SpringBoot 程序
java·spring boot·后端