一尘不染

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

json

我有一个WCF服务操作,该操作返回带有longList<string>属性的对象。当我在WCF应用程序中测试操作时,一切正常,并且值正确。但是,我需要能够使用jQuery和JSON格式调用该服务。long当我在OnSucceed函数中读回该属性时,该属性的值显然会更改。

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

alert(JSON.stringify(25001509088465005));

…它将显示为25001509088465004

怎么了?

此处的演示:http :
//jsfiddle.net/naveen/tPKw7/


阅读 370

收藏
2020-07-27

共1个答案

一尘不染

JavaScript使用IEEE-754双精度(64位)格式表示数字。据我了解,这为您提供53位精度,或者15至16个十进制数字。您的数字位数超出了JavaScript所能应付的位数,因此最终得到了一个近似值。

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

2020-07-27