前端處理後端傳回的 Long 類型數據精度丟失
1 問題描述
直接拋問題,如下圖所示:
查看 Network 時,響應回來的 Long 類型數據和在控制檯打印的數據出現的精度丟失的問題。
2 問題原因
經查閱資料,原來 JS 內置有 32 位整數,而 number 類型的安全整數是 53 位。如果超過 53 位,則精度會丟失。正如現在後臺傳來一個 64 位的 Long 類型整數,因此超過了 53 位,所以後臺返回的值和前臺獲取的值會不一樣。
後端可以給前端傳一個 Long 類型的數據,但是這個 Long 類型的數據也不能太長,不然 js 轉換乏力。
3 解決辦法
3.1 後端處理
一般不需要進行實體類屬性的數據類型修改,SpringBoot 中提供了一個解決方法,在 application.properties 配置文件中添加如下配置即可:
# 將所有數字轉爲 String 類型返回,避免前端數據精度丟失的問題
spring.jackson.generator.write-numbers-as-strings = true
3.2 前端處理
待完善