天天看點

java對象轉json, 數字精确出現丢失

現象

 java中的大數字比如18/19位的整數(long),轉為json,輸出到頁面後,就出現精度丢失,如果數字再大些就會出現科學計數法。

這兩個問題都不是json工具包(比如Gson)的問題,而是由于js存儲大數字丢失精度引起。

1、精度丢失例子:當js表達整數時,最多表達15位數字,如果超過15位就會出現精度丢失問題。

援引js文檔:

精度

整數(不使用小數點或指數計數法)最多為 15 位。

最後幾位都變為0,丢失精度

var x = 1234567890123456999;
console.log(x);
輸出結果:1234567890123457000
           

2、

數字再大一些就會出現,科學計數法

var x = 123456789012345699999999;
console.log(x);
輸出結果:1.234567890123457e+23
           

解決辦法

背景屬性由數字類型改為字元串,轉為json,傳到前台就不會丢失了。

繼續閱讀