前端處理後端傳回的 Long 類型數據精度丟失

前端處理後端傳回的 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 前端處理

待完善

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章