2014-10-19 76 views
0

我不確定這是否是一個錯誤,如果我剛剛達到GWT的限制,或者我只是愚蠢地創建一個具有如此之高的數字的double。GWT - Double to Long導致錯誤編號

在做在客戶端執行以下操作:

Double d = 10152826455075087d; 
GWT.log("Value is now: " + d.toString()); 

這將打印數量:10152826455075088

這是從Facebook獲取和ATM,我把它作爲一個長期的ID,但如果這是一個限制,我必須開始將我的ID存儲爲字符串。

有人可以確認這是一個錯誤還是限制?另外,如果它是一個錯誤,我該在哪裏報告?

謝謝!

回答

1

這個數字是如此巨大,雙精度浮點數比1更高。Epsilon描述了當前和下一個可能數字之間的距離。

試試這個在您的瀏覽器的控制檯:

console.log(10152826455075087); 

它將打印10152826455075088.的JavaScript存儲所有號碼爲雙精度浮點數。

+0

謝謝您的確認!我認爲GWT在場景中做了一些魔術,將double存儲爲包含前半部分和後半部分的數組,以便可以轉換爲Long? :/ – Whyser 2014-10-19 13:09:53

+0

不要擔心在客戶端將ID存儲爲字符串,因爲您不會將該ID用於數學運算。您不會嘗試添加,減去兩個ID或將它們相乘,因此對於您來說,它們就是這樣:ID,就像電話號碼一樣。 – Zenorbi 2014-10-19 13:57:05

+0

我並不擔心使用String作爲ID,它只是更方便地使用Long,因爲我所有的實體都有Long ID(使用Objectify和String將不會自動生成ID),但是我將在存儲facebook- ID在未來。謝謝! – Whyser 2014-10-19 14:28:47