大数字上的JSON.Stringify()会改变数值吗?

我有一个WCF服务操作,返回一个具有longList属性的对象。 当我在WCF应用程序中测试操作时,一切正常,值正确。 但是,我需要能够使用jQuery和JSON格式调用服务。 当我在OnSucceed函数中读回它时, long属性的值显然会发生变化。

搜索后我发现JSON.stringify改变了大值。 所以在这样的代码中:

 alert(JSON.stringify(25001509088465005)); 

…它将显示值为25001509088465004

怎么了?

在这里演示: http : //jsfiddle.net/naveen/tPKw7/

JavaScript表示使用IEEE-754双精度(64位)格式的数字。 据我所知,这给你53位精度,或十五到十六位小数。 您的号码比JavaScript可以处理的数字更多,因此您最终得到一个近似值。

你需要对这个大数字进行数学运算吗? 因为如果它只是某种ID,你可以将它作为字符串返回并避免问题。