直接拋問題,如下圖所示:
檢視 network 時,響應回來的 long 型別資料和在控制台列印的資料出現的精度丟失的問題。
經查閱資料,原來 js 內建有 32 位整數,而 number 型別的安全整數是 53 位。如果超過 53 位,則精度會丟失。正如現在後台傳來乙個 64 位的 long 型別整數,因此超過了 53 位,所以後台返回的值和前台獲取的值會不一樣。
後端可以給前端傳乙個 long 型別的資料,但是這個 long 型別的資料也不能太長,不然 js 轉換乏力。3.1 後端處理
# 將所有數字轉為 string 型別返回,避免前端資料精度丟失的問題
spring.jackson.generator.write-numbers-as-strings = true
3.2 前端處理handleresdata(str) 將所有對應的長整數 value,通過正則查出加上字串的雙引號標識,然後進行 json.parse() 轉回 string。該方法並不能進行長整數計算,需要的話可以使用 long.js。
wx.
request(,
datatype:
'text'
, header:
, method:
'post'
,success
:function
(res),
fail
:function
(err)}
)function
handleresdata
(str
)[,]?/.
test
(_str)
if(i ==
true
)[,]?/.
exec
(_str)
var handlestr2 =
/[0-9]/.
exec
(handlestr[0]
) _str = _str.
replace
(handlestr[0]
,':"'
+handlestr2[0]
+'",')}
} _str = _str.
replace(/
[,][}]/g
,'}'
)return
json
.parse
(_str)
}
id為Long型別的後端處理方案
痛點 js的long型別最大17位數,超過17位的數字,為將多出來的位數變成零 queryuser public list user queryuser 開啟瀏覽器,請求介面,結果如下!我們這裡選擇第二種方法 我們可以使用jackson工具包來實現物件序列化。springboot預設自帶是jacks...
後端傳的long資料型別,前端js解析後精度失準
前言 昨晚上和後端對介面,乙個返回的json陣列裡面,有兩條資料一直對不上號。他在postman裡面測是乙個資料,到了我這邊拿到資料以後console.log,那個引數的資料值就變了。一直到不到原因 但是在前端response裡面可以看到,後端傳的資料是正確的,在preview裡面卻不正確 2.原因...
後端傳Long型別資料精度問題
在今天編碼過程中發現乙個小問題。後端資料庫資料 1169459812992421888 前台拿到 1169459812992422000 前幾位高度重合,排除程式邏輯問題。在返回前設定斷點列印,資料依據與資料庫依舊保持一致 說明資料是在返回過程中丟失了精度。考慮不直接傳long,傳json 引入依賴...