背景:
今天上午,我們的項目中遇到了這麼一個問題:
後端傳回了long型數值,但是前端接收後,後面的幾位都變成0了,如圖所示:
排查:
傳回的數值是由後端傳回,是以我們一開始以為是後端的原因,但是經過排查,我們發現後端一切都是正常的,那麼問題出在了哪裡呢?
利用Postman來請求,我們發現傳回的資料是正常的,後來我看了一下Response,裡面的資料竟然也是正常的!
抱着Preview 和Response不一樣的想法,經過百度,終于得知:
由于JavaScript中Number類型的自身原因,并不能完全表示Long型的數字,在Long長度大于17位時會出現精度丢失的問題。
解決:
原因有了,那麼解決的方法是顯而易見的:
1、在背景把long型改為String類型(推薦);
教程位址:簡單版、進階版
2、讓前端支援long型。
教程位址:Java Script中實作Long型