直接拋問題,如下圖所示:
檢視 network 時,響應回來的 long 型別資料和在控制台列印的資料出現的精度丟失的問題。
經查閱資料,原來 js 內建有 32 位整數,而 number 型別的安全整數是 53 位。如果超過 53 位,則精度會丟失。正如現在後台傳來乙個 64 位的 long 型別整數,因此超過了 53 位,所以後台返回的值和前台獲取的值會不一樣。
後端可以給前端傳乙個 long 型別的資料,但是這個 long 型別的資料也不能太長,不然 js 轉換乏力。3.1 後端處理
3.2 前端處理# 將所有數字轉為 string 型別返回,避免前端資料精度丟失的問題
spring.jackson.generator.write-numbers-as-strings = true
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 引入依賴...