JS大坑之17位以后的Number类型数值精度丢失问题

接口返回数据中携带有id字段,如果数值过大,在显示的时候会发现精度丢失。

在这里插入图片描述
当然,前端解析响应数据后,也在所难免发生精度丢失问题。
代码如下:

var text = '{"id":18014398509481985}';
var obj = JSON.parse(text);
console.log(obj);
//结果: {id: 18014398509481984}

解决办法:

  1. 后端将ID处理成字符串的形式
  2. 前端通过正则,处理返回的响应数据,转换成字符串
var text = '{"id":18014398509481985}';
const id= text.match(/\d{17,}/)[0]; // 正则获取大于17位数字的值
text = text.replace(id,`"${id}"`); // 补上双引号
const data = JSON.parse(text);
//结果: {id: "18014398509481985"}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章