天天看點

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

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

以下為解析和解決方案:

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

javascript:void(0)

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>,轉換成字元串類型的。

耶和華是我的牧者,我必不至缺乏。