2012-07-17 67 views
1

我正在使用jquery從我的web服務器獲取json數據。當我檢查返回的提琴手數據時,一切看起來都很正常。但是,當我在Chrome/IE /或Safari中啓動調試時,我注意到一些值已更改。例如,Int64從服務器發送的值爲:10150987224093521.但是,當我調試時,我將其視爲1015098722409352 * * *值始終減1。提琴手顯示正確的值,即:10150987224093521。它隨機發生。我找不到合乎邏輯的理由。任何想法或暗示爲什麼會發生這種情況?JSON Int64數據翻轉/隨機變化

回答

2

的JavaScript表示的所有數字用雙浮筒:

http://en.wikipedia.org/wiki/JavaScript_syntax#Number

數字通常以二進制表示爲IEEE-754雙打,它提供 精度近16顯著數字。因爲它們浮點數,它們並不總是精確地表示實數,包括分數在內的 。

你的電話號碼有17位:10 15098 72240 93521,所以你開始失去精確度。

快速javascript演示:http://jsfiddle.net/EYjjX/

+0

謝謝!這真的很有幫助。我怎樣才能將它解析爲一個字符串呢?我沒有對它進行任何數學操作。它只是用作標識符/鍵。 – MAhmed 2012-07-17 15:50:11

+0

是的,我認爲你必須使用字符串。當json_encoding從php中查找數字時,我遇到了類似的問題。或者是另一個StackOverflow問題? :) – biziclop 2012-07-17 16:17:18

+0

DailyWTF也有類似的問題:http://thedailywtf.com/Articles/Confessions-The-Phone-Number.aspx – biziclop 2012-07-17 16:44:18