前端接收服務端返回long型別的資料精度失真問題

2021-10-24 08:08:00 字數 756 閱讀 4112

原因:js是弱型別的語言,在變數宣告時不會限制資料型別,所以後端返回的什麼資料型別前端接收到之後就是什麼資料型別,js中用53位儲存資料,能精準表示的最大證書是math.pow(2, 53),十進位制即 9007199254740992,後端返回的long型別的資料大於這個數,所以使用js的數字型別儲存long型別的資料型別時就出現了失真的問題,前端接收到的已經不是服務端返回的真實資料了

解決方法:

服務端解決:服務端將long型別的資料轉化為字串型別再傳送給前端,前端接收到的資料是字串型別就不會出現失真問題,完美解決

前端解決:

思路:前端只要用變數儲存後段返回的long型別的資料就會出現失真問題,必須要先將服務端返回的long型別的資料轉化為字串型別再使用json.parse()解析

(1)比較簡單的方法就是使用第三方庫轉化,例如 json-bigint庫,使用axios中的

transformresponse: [data => jsonbig.parse(data)]屬性即可

(2)自己寫函式修改,請求資料時新增屬性datatype:』text』,在知道服務端欄位的情況下可以直接將該字段對應的long型別的資料通過正則匹配轉化為字串型別

getrealjsondata

(basestr)

)return

json

.parse

(basestr);}

,

WebUploader 接收服務端返回的資料

上傳檔案成功兩部曲 1 通過webuploade外掛程式 獲取上傳檔案的資訊資料並傳參給服務端程式,為webuploader意義上的上傳檔案成功 2 通過服務端程式 將檔案儲存到指定路徑和檔案資訊入庫,為最終的上傳檔案成功 一 遇到的問題 上傳簡歷時,上傳檔案成功兩部曲第二步驟中解析檔案入庫時,解析...

服務端返回List 資料, http 無法接收

最後在同事的幫助下,找到了這個問題的解決方法,我只簡單的寫一下重點,本方法寫在服務端 自己的邏輯處理程式,得到乙個list 型別的資料 接下來就是見證奇蹟的時刻 printwriter out response.getwriter net.sf.json.jsonobject json new ne...

規範建議 服務端介面返回字段型別與iOS端的解析

一 本文件的寫作目的 本文件講解針對的是服務端返回資料時使用的字段資料型別如何選擇 ios端將json資料轉模型的時候用什麼型別來定義對應的屬性。二 本文件的使用範圍 首先介紹下在本文件中使用的技術領域。1 服務端使用的是c 語言 2 api介面文件自動生成 3 採用的是json資料傳輸格式 4 i...