Javascript JSON响应被浏览器修改
我正在调用一个返回JSON数据的RESTFUL web服务。响应包含一个数字值(不带引号)1000000000223169,但在获得针对该响应的JavaScript对象后,我得到1000000000223168Javascript JSON响应被浏览器修改,javascript,json,http,httpresponse,Javascript,Json,Http,Httpresponse,我正在调用一个返回JSON数据的RESTFUL web服务。响应包含一个数字值(不带引号)1000000000223169,但在获得针对该响应的JavaScript对象后,我得到1000000000223168 浏览器中直接显示的JSON响应也显示1000000000223168,但内容选项卡中的FireBug HTTP响应显示了正确的值,即10000000002231691000000000223169超出了JavaScript中可以表示为精确整数的范围(因此JSON)。它大约为2^53.15
浏览器中直接显示的JSON响应也显示1000000000223168,但内容选项卡中的FireBug HTTP响应显示了正确的值,即10000000002231691000000000223169超出了JavaScript中可以表示为精确整数的范围(因此JSON)。它大约为2^53.151,IEEE 754仅允许双精度浮点数尾数的53位分辨率 要在不修改的情况下传输它,需要将其作为字符串发送 在使用此代码的客户机中,还需要将其存储为字符串或64位整数(假设您使用的是具有此类数据类型的语言)
如果您尝试将其存储在IEEE 754浮点中(这是JS中的默认数字类型),则在您尝试对其执行任何数学运算时,它仍将四舍五入到53位精度。1000000000223169超出了JavaScript中可能表示为精确整数的范围(因此JSON)它大约是2^53.151,IEEE 754仅允许双精度浮点数尾数的53位分辨率 要在不修改的情况下传输它,需要将其作为字符串发送 在使用此代码的客户机中,还需要将其存储为字符串或64位整数(假设您使用的是具有此类数据类型的语言)
如果您尝试将其存储在IEEE 754浮点(这是JS中的默认数字类型)中,当您尝试对其执行任何数学运算时,它仍然会四舍五入到53位精度。这是因为JavaScript中的数字都是整数 整数最多只能表示为2^53 您的号码太大,无法作为数字发送,您应该将其作为字符串发送
如果您需要在浏览器中使用此数字进行计算,最简单的解决方案是使用一个大数字专用库(请参阅)。这是因为JavaScript中的数字是 整数最多只能表示为2^53 您的号码太大,无法作为数字发送,您应该将其作为字符串发送
如果您需要在浏览器中使用此数字进行计算,最简单的解决方案是使用一个大数字专用库(请参阅)。您的服务是否返回一个序列号?如果是,您的代码可能会调用RESTFUL服务两次(显示第一次)。奇怪的是,你得到的结果正好少了1个数字!@Zachary不,这与此无关。这是因为JS中没有这样的(合法)整数。你的服务返回的是序列号吗?如果是,可能你的代码调用RESTFUL服务两次(显示第一次).奇怪的是,你得到的结果正好少了1个数字!@Zachary不,这与此无关。这是因为没有这样的(法律)JS中的整数。许多大数字可以准确表示,你必须幸运。当然,你的数字越大,准确表示的可能性越小。许多大数字可以准确表示,你必须幸运。当然,你的数字越大,准确表示的可能性越小。