JS、JSON精度丟失的問題總結


 

最近做的項目,使用了19位int 出現最后兩位變成00的問題。

以下為解析和解決方案:

JS19位數的Number型精度丟失問題詳解

https://www.cnblogs.com/xuyaoyao/p/9322035.html

 

JSON Bigint 大數精度丟失的背后

https://cloud.tencent.com/developer/article/1477816

 

前端獲取Long型數值超過17位精度丟失的解決辦法

前端獲取Long型數值精度丟失

 

我后端是用的雪花算法生成的20位的唯一ID,我返回給前端的時候,例如:

我返回的是Long類型的,但是前端接收之后精度丟失,導致和我后端給的不一致,解決辦法就是使用String類型的。

 

后端傳輸JSON格式化為String類型的。

 

@JsonFormat(shape = JsonFormat.Shape.STRING)

private Long aliyunOssFileId;

@JsonFormat(shape = JsonFormat.Shape.STRING)作用就是將JSON數據的此字段格式化為字符串類型,保證前端超過17位不會出現精度丟失問題!

前端使用String類型來接收。

aliyunOssFileId: ''

后端生成:674563542816526336

前端接收:674563542816526300

 

由於JavaScript中Number類型的自身原因,並不能完全表示Long型的數字,在Long長度大於17位時會出現精度丟失的問題。

所以,不應該使用ResponseBean<Long>,應該使用ResponseBean<String>,轉換成字符串類型的。

參考:https://www.lzhpo.com/article/106

 

 

文章來源:劉俊濤的博客 歡迎關注公眾號、留言、評論,一起學習。

__________________________________________________________________________________

若有幫助到您,歡迎點擊推薦,您的支持是對我堅持最好的肯定(*^_^*)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM