2012-07-17 79 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