2011-04-02 107 views
4

Javascript將所有數字表示爲雙精度浮點數。這意味着它在處理64位Java Long數據類型的最高端的數字時會失去精度 - 17位數後的任何值。例如,編號:在Ajax中處理非常大的長數字的最佳方法是什麼?

714341252076979033 

...變爲:

714341252076979100 

我的數據庫使用長的ID,而有些事是在危險區域。我可以更改數據庫中的違規值,但這在我的應用程序中很難。相反,現在我非常費力地確保服務器在所有ajax響應中將Long ID編碼爲字符串。

但是,我更願意在Javascript中處理這個問題。我的問題:有強制JSON解析將數字視爲字符串的最佳做法嗎?

+0

你可能必須編寫自己的解析器。我懷疑任何股票JSON解析器都可以選擇做這樣的事情。 – Pointy 2011-04-02 20:54:00

回答

8

您必須將您的值作爲字符串發送(即用引號括起來),以確保Javascript將它們視爲字符串而不是數字。

我不知道要解決這個問題。

+0

謝謝...這就是我正在做的,我想我會堅持下去。標記爲已接受,因爲這是幾個正確答案中的第一個。 – 2011-04-02 23:11:34

0

JavaScript將所有數字表示爲64b IEEE 754浮點數。

如果你的整數不適合52位,那麼它將被截斷,這就是發生在這裏。

如果您確實需要更改數據庫,請將其更改爲發送52位整數。或53位有符號整數。

否則,將它們作爲字符串發送。

相關問題