前后端Long类型ID精度丢失问题

Java 的 Long 类型可以表示**-2^63** 到**2^63-1** 的整数

JavaScript 的 Number 类型是基于 IEEE 754 双精度浮点数标准,只能安全表示 -2^53 到 2^53 之间的整数。

前端接收到的 JSON 中 userId: 1975534353465823200(数字格式),JavaScript 将其解析为 Number 类型,超出精度范围,精度丢失,变成 1975534353465823234

安全整数范围-90071992547409919007199254740991

超出范围的数字会丢失精度

比如:

javascript 复制代码
// JavaScript 安全整数
console.log(Number.MAX_SAFE_INTEGER);  // 9007199254740991

// 超出安全范围的数字
const id = 1975534353465823200;
console.log(id);  // 1975534353465823234  ← 最后几位发生变化!

解决方法:

后端序列化时转为字符串,在所有返回给前端的 VO 类中,对 Long 类型的 ID 字段添加注解:

javascript 复制代码
/**
  *  使用字符串序列化避免前端精度丢
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
相关推荐
untE EADO12 小时前
Java进阶之路,Java程序员职业发展规划
java·开发语言
yqcoder12 小时前
CSS 迷思破解:`:nth-child` vs `:nth-of-type`
前端·css
时寒的笔记12 小时前
某陆飞11期_webpack案例
前端·webpack·node.js
长河13 小时前
基于 Jib 实现无 Dockerfile 的 Spring Boot 应用容器化
java·spring boot·后端
漫游的渔夫13 小时前
前端开发者做多步 Agent:别让 AI 边想边乱跑,用 Plan-Act-Observe 稳住 4 步任务
前端·人工智能·typescript
Maiko Star13 小时前
Spring AI ChatClient 完全指南:从基础配置到流式调用
java·人工智能·spring
l1t13 小时前
类似 X-13ARIMA-SEATS 功能的 JDemetra+ 安装和使用
java·数据库·r语言
架构源启13 小时前
2026 进阶篇:深入理解Spring Reactor响应式编程的核心引擎(源码级解析+实战避坑)
java·后端·spring
武帝为此13 小时前
【Selenium 执行 JavaScript】
javascript·selenium·测试工具
用户9623779544813 小时前
Ghost Bits:高位截断如何让 Java WAF 形同虚设
后端