Spring Boot 处理 Long 类型的 json 数据,前端调用精度丢失,变成 00
2023-09-14 09:07:22 时间
问题描述
错误的ID,最后两位数都是0,即:
1152921504735848700,
但是,正确的是:
1152921504735848759,
遇到Long类型的数据,传送给前端遇到精度丢失的问题.
后端的订单号值比如1089713253179727872 传给前端 显示出来是1089713253179727900。
拿postman测试接口没有问题,查到的是正确的数据,原来是因为Long类型数据传给前端可能精度丢失,js中的数据类型不能包含所有的java long值。
这个问题真是在前后端连接的夹缝中求生存了,同事跟我说拿返回的数据查不到,我拿postman调后端又完全发现不了问题。话又说回来,用swagger可以发现这个问题的。
后端(Java)数据获取正常,前端显示精度有误。
原因分析
Java Long的范围:
long的最大值:9223372036854775807
long的最小值:-9223372036854775808
大整数的精度丢失和浮点数本质上是一样的,尾数位最大是 52 位,因此 JS 中能精准表示的最大整数是 Math.pow(2, 53),十进制即 9007199254740992。
600040076242144000 > 9007199254740992
9007199254740992
大于 9007199254740992 的会丢失精度。
9007199254740992 >> 10000000000000…000 // 共计 53 个 0
9
相关文章
- 深度剖析Spring Cloud Alibaba系列——如何兼容Nacos
- Spring-Retry 和 Guava-Retry,各有千秋
- Spring MVC框架:第七章:REST架构风格
- spring boot整合shiro_Spring框架介绍及使用
- 面试官:说一下Spring MVC的启动流程呗
- 9-Spring集成web环境
- Spring Boot、Spring Cloud 自定义配置文件(如何整合配置中心)
- Spring Boot凭什么成为JVM圈的框 架“一哥”
- Java项目分享-基于Spring Boot的迷你天猫商城
- Spring Boot使用websocket实现聊天室
- 不会前端没事,用GWT Boot和Spring Boot构建Web程序
- Spring Boot 入门
- Spring 6.0 正式发布,新王登基!!
- Spring Boot 构建多租户系统 实现动态切换数据源
- 在spring boot3中使用native image
- Spring Boot的测试工具和技巧(一)
- Spring Data MongoDB 级联操作详解数据库
- Spring Boot 自定义日志详解编程语言
- Spring Boot 最核心的 3 个注解详解编程语言
- spring-boot 访问时,加与不加项目名分析详解编程语言
- Spring Boot(二十):使用spring-boot-admin对spring-boot服务进行监控详解编程语言
- Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例详解编程语言
- Spring Boot(十四):spring boot整合shiro-登录认证和权限管理详解编程语言
- Spring Boot(十三):spring boot小技巧详解编程语言
- Spring Boot(五):spring data jpa的使用详解编程语言
- spring boot 集成disconf详解编程语言
- java spring boot 定时器详解编程语言
- Spring中DAO被循环调用的时候数据不实时更新的解决方法