【js系】一次前端id超过16位整数的bug问题

先前言讲述下,项目中碰到的一个奇葩问题,项目中有个列表启用按钮,界面操作流程是先选择某一行记录选中点击启用,可是选中后某一行竟然没有操作上。

于是就前端debug查看下前端传递后端参数值是否有问题

果真有个id的值,后端数据库查询返回给前端的是13557206188654767 结果启用传给后端的接口id值变成了13557206188654768

看到这个问题,于是就搜索引擎关于js 超过16位失真的问题 ,找了篇文章大概理解了下

js精度丢失问题

js超过16位失真

JavaScript 存储小数和其它语言如 Java 和 Python 都不同,JavaScript 中所有数字包括整数和小数都只有一种类型 即 Number类型

js的number有个最大值(安全值)。即2的53次方,为9007199254740992。如果超过这个值,那么js会出现不精确的问题。这个值为16位。

如何防止这个事情发生呢?

1.后端转成字符串返回给前端处理
2.使用前端其他js组件引入处理。比如decimal.js附上地址decimal.js
3.项目中数据库设计字段控制长整型数字位数在16位以内 

posted @ 2023-05-06 17:41  奔跑吧,小子  阅读(243)  评论(0)    收藏  举报  来源