【js系】一次前端id超过16位整数的bug问题
如果超过这个值,那么js会出现不精确的问题。果真有个id的值,后端数据库查询返回给前端的是13557206188654767 结果启用传给后端的接口id值变成了13557206188654768。先前言讲述下,项目中碰到的一个奇葩问题,项目中有个列表启用按钮,界面操作流程是先选择某一行记录选中点击启用,可是选中后某一行竟然没有操作上。看到这个问题,于是就搜索引擎关于js 超过16位失真的问题 ,找
·
先前言讲述下,项目中碰到的一个奇葩问题,项目中有个列表启用按钮,界面操作流程是先选择某一行记录选中点击启用,可是选中后某一行竟然没有操作上。
于是就前端debug查看下前端传递后端参数值是否有问题
果真有个id的值,后端数据库查询返回给前端的是13557206188654767 结果启用传给后端的接口id值变成了13557206188654768
看到这个问题,于是就搜索引擎关于js 超过16位失真的问题 ,找了篇文章大概理解了下
JavaScript 存储小数和其它语言如 Java 和 Python 都不同,JavaScript 中所有数字包括整数和小数都只有一种类型 即 Number类型
js的number有个最大值(安全值)。即2的53次方,为9007199254740992。如果超过这个值,那么js会出现不精确的问题。这个值为16位。
如何防止这个事情发生呢?
1.后端转成字符串返回给前端处理
2.使用前端其他js组件引入处理。比如decimal.js附上地址decimal.js
3.项目中数据库设计字段控制长整型数字位数在16位以内
更多推荐
已为社区贡献1条内容
所有评论(0)