当前位置: 首页 > 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/a/155639.html

相关文章:

  • 【大数据学习 | flume】flume的概述与组件的介绍
  • Jetpack 之 Ink API初探
  • 【插件】多断言 插件pytest-assume
  • 【STM32F1】——无线收发模块RF200与串口通信
  • MacOS 本地生成SSH key并关联Github
  • ubuntu20.04安装FLIR灰点相机BFS-PGE-16S2C-CS的ROS驱动
  • 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——模板之从天而降