后端返回的數據與前端console.log數據不一致問題(network中preview和response返回不一致)
在項目中偶爾會遇到后端返回的一大串數字,類似於訂單編號(orderId),券ID(couponId)等等。有時候這些數字遠超過十位、八位什么的;可能會有二十幾位的一串數字。前端一般拿到數據是后面幾位都是0。
一般這種情況是,精度丟失
精度丟失多出現於,后端使用的字段類型的精度與前端不一樣。
前段時間遇到的couponId有十九位長的數字。前端拿到的值后面三位全是0。postman跑出來的是十九位的正常的,后三位非0,但是console.log()打印的結果后三位是0;由於console.log()是異步的,可能頁面的某些邏輯影響到了結果。我在接口返回的最始地方alert了下,發現最后三位還是0,與實際的值不符合。
中間省略n個過程,直接到結果:
問了下后端用的哪種類型,后端說是用了long類型,long類型與javaScript中的長度是不一致的,Java中的long類型是JavaScript的好多倍。於是讓后端將Long類型修改成string類型就解決了該問題