js17位及以上Number类型数值精度丢失问题

前端 62426 4年前 (2020-04-17) 1026次浏览 0个评论 扫描二维码

请求后端时,一个17位的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"}
喜欢 (2)
[支付宝扫码,感谢支持]
分享 (0)
关于作者:

您必须 登录 才能发表评论!