Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON响应被浏览器修改_Javascript_Json_Http_Httpresponse - Fatal编程技术网

Javascript JSON响应被浏览器修改

Javascript 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数据的RESTFUL web服务。响应包含一个数字值(不带引号)1000000000223169,但在获得针对该响应的JavaScript对象后,我得到1000000000223168


浏览器中直接显示的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中的整数。许多大数字可以准确表示,你必须幸运。当然,你的数字越大,准确表示的可能性越小。许多大数字可以准确表示,你必须幸运。当然,你的数字越大,准确表示的可能性越小。