使用雪花算法作为id之后,前端精度丢失怎么办?
问题描述:据库id:2045180887314309121 页面传递id:2045180887314309000这个接口返回到id就是:2045180887314309000为什么会这样?问题1:ID精度丢失(JavaScriptNumber精度问题)🔍问题分析数据库 ID: 2045180887314309121前端接收: 204518088
问题描述:
据库id:2045180887314309121 页面传递id:2045180887314309000
这个接口返回到id就是:2045180887314309000 为什么会这样 ?
问题 1:ID 精度丢失(JavaScript Number 精度问题)
🔍 问题分析
数据库 ID: 2045180887314309121 前端接收: 2045180887314309000 ❌ 最后几位变成了 000
原因:JavaScript 的 Number 类型最大安全整数是 2^53 - 1 = 9007199254740991,而你的 ID 2045180887314309121 超过了这个范围,导致精度丢失。
✅ 解决方案:将 ID 作为字符串传输
需要将所有 ID 字段从 number 改为 string。但更好的方案是在后端配置 Jackson 序列化时将 Long 类型转为字符串:
创建一个 Jackson 配置类来处理 Long 类型序列化:
import com.fasterxml.jackson.databind.ObjectMapp
原创不易,完成人机校验,阅读全文