大数字上的JSON.Stringify()会改变数值吗?
我有一个WCF服务操作,返回一个具有long
和List
属性的对象。 当我在WCF应用程序中测试操作时,一切正常,值正确。 但是,我需要能够使用jQuery和JSON格式调用服务。 当我在OnSucceed
函数中读回它时, long
属性的值显然会发生变化。
搜索后我发现JSON.stringify
改变了大值。 所以在这样的代码中:
alert(JSON.stringify(25001509088465005));
…它将显示值为25001509088465004
。
怎么了?
在这里演示: http : //jsfiddle.net/naveen/tPKw7/
JavaScript表示使用IEEE-754双精度(64位)格式的数字。 据我所知,这给你53位精度,或十五到十六位小数。 您的号码比JavaScript可以处理的数字更多,因此您最终得到一个近似值。
你需要对这个大数字进行数学运算吗? 因为如果它只是某种ID,你可以将它作为字符串返回并避免问题。