大数字上的JSON.Stringify()会更改数字值吗?
我有一个WCF服务操作,该操作返回带有long
和List<string>
属性的对象。当我在WCF应用程序中测试操作时,一切正常,并且值正确。但是,我需要能够使用jQuery和JSON格式调用该服务。long
当我在OnSucceed
函数中读回该属性时,该属性的值显然会更改。
搜索后,我发现它会JSON.stringify
改变很大的价值。所以在这样的代码中:
alert(JSON.stringify(25001509088465005));
…它将显示为25001509088465004
。
怎么了?
此处的演示:http :
//jsfiddle.net/naveen/tPKw7/
回答:
JavaScript使用IEEE-754双精度(64位)格式表示数字。据我了解,这为您提供53位精度,或者15至16个十进制数字。您的数字位数超出了JavaScript所能应付的位数,因此最终得到了一个近似值。
您需要对这个大数字进行数学运算吗?因为如果它只是某种ID,则可以将其作为字符串返回并避免该问题。
以上是 大数字上的JSON.Stringify()会更改数字值吗? 的全部内容, 来源链接: utcz.com/qa/397614.html