当前位置: 首页 > article >正文

后端Long型数据传到前端js后精度丢失的问题

假设一个场景,MybatisPlus雪花算法生成long类型主键ID,存入数据库,前端获取到数据后,要执行一个更新操作(updateById),但这时会出现无法成功更新的情况!这是因为前端在长度大于17位时会出现精度丢失的问题。

Number转换19位(6145390195186705543)后结果为 6145390195186705000

在这里插入图片描述

造成原因:看网上资料说:js的number类型有个最大安全值,即2的53次方(9007199254740992),超过这个值就会出现精度丢失的问题。
经过个人测试,上面这个说法还是不准确的,应该是超过16位出现精度丢失,16位以后的数字都会转换成0。
这是因为JS是弱语言,前端接收数字类型参数为number,最大接收长度为16位,超出长度则会丢失精度,而JAVA的Long类型长度为19位,所以传输到前端的后三位精度丢失,所以我们解决该问题的思路就是:把java里的Long类型转换为String返回给前端。

作者:瓩千瓦
链接:https://www.jianshu.com/p/d2eb9795c359
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


http://www.kler.cn/news/155639.html

相关文章:

  • 02.PostgreSQL 查询处理期间发生了什么?
  • 单片机学习11——矩阵键盘
  • 【无标题】我们只能用成功来摧毁我们,原来的自己只会破败自己的事情。
  • redis实现消息延迟队列
  • 使用Redis构建任务队列
  • Hdoop学习笔记(HDP)-Part.02 核心组件原理
  • 基于SSM的职业高中智慧作业试题系统设计
  • 3dMax拼图生成工具Puzzle2D使用教程
  • Java Throwable
  • Spring中@Transactional注解
  • QueryRunner报红处理
  • electron-vue运用及案例代码
  • 后端项目连接数据库-添加MyBatis依赖并检测是否成功
  • flutter开发实战-为ListView去除Android滑动波纹
  • 在cmd下查看mysql表的结构信息
  • 【Android踩过的坑】13.Android Studio 运行成功,但APP没有安装上的问题
  • electron打包 Error output: !include: could not find:
  • 挖漏洞之SQL注入
  • Python---格式化输出与%百分号----涉及转义符 \ 反斜杠的使用
  • FLASK博客系列5——模板之从天而降
  • electerm下载和安装
  • YOLOv7+姿态估计Pose+tensort部署加速
  • MDETR 论文报告
  • MySQL中的锁(简单)
  • thinkphp 判断当前页 导航条高亮等方法
  • Android 13 - Media框架(21)- ACodec(三)
  • selinux-policy-default(2:2.20231119-2)软件包内容详细介绍(5)
  • 【深度学习实验】图像处理(四):PIL——自定义图像数据增强操作(图像合成;图像融合(高斯掩码))
  • 链表算法总结
  • Apache Doris 整合 FLINK 、 Hudi 构建湖仓一体的联邦查询入门