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"}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章