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

相关推荐
Ivanqhz2 分钟前
Rust collect() 浅析
开发语言·后端·rust
卷无止境20 分钟前
python进阶:类方法与静态方法的分野,classmethod 和 staticmethod 到底该怎么选
后端·python
AINative软件工程22 分钟前
LLM 应用的分层可观测性工程实践:从 Span 到 Prompt Diff,三层 Trace 让 AI 系统真正可调试
后端·ai编程
卷无止境23 分钟前
继承与多态:Python OOP里最容易被用错的两把梯子
后端·python
明月_清风31 分钟前
📊 Tokenomics 入门:如何看懂一个项目的代币经济?
后端·web3
明月_清风37 分钟前
🏛️ DAO 治理入门:没有老板的公司怎么运转?
后端·web3
yuhaiqiang44 分钟前
上线一个人静态网站需要多少钱,难不难?
前端·后端·程序员
小Ti客栈11 小时前
Spring Boot 集成 Springdoc-OpenAPI 与 Knife4j实现接口文档与可视化调试
java·spring boot·后端
Ai拆代码的曹操12 小时前
Spring 事务 REQUIRES_NEW 嵌套调用:连接池翻倍的秘密
java·后端·spring
IT_陈寒14 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端