使用 AngularJS' $http.get() 处理 64 位数字
Handling 64-bit numbers using AngularJS' $http.get()
在我的 Angular 应用程序中,我正在向 URL 发出 $http.get() 请求,该请求使用 json 对象进行响应。该对象包含的值有时是一个非常大的数字(例如 9106524608436223400)。查看 Chrome 中的网络分析器,我可以看到数字正在正常下降,但是当 $http.get() 有它的回调命中时,数字会有些损坏。我认为这是因为数字非常大而不是字符串。有什么方法可以让 Angular 正确处理此响应,或者我是否需要将服务器的输出包装为字符串?谢谢
JavaScript 中的数字是 double precision floating point 个数字。这意味着它们只能处理高达 52 位的全精度整数。
任何解析 JSON 的代码都无法将数字表示为 JavaScript 中的常规数字。
JSON standard 没有对数字的范围或精度指定任何限制。然而,由于 JSON 是基于 JavaScript 语法的一个子集,有人可能会争辩说该格式不支持 JavaScript.[=12= 中可以表示的数字之外的数字。 ]
要安全地获取未更改的值,您需要将其作为字符串放入 JSON,或者将其拆分为两个或更多更小的数字。
在我的 Angular 应用程序中,我正在向 URL 发出 $http.get() 请求,该请求使用 json 对象进行响应。该对象包含的值有时是一个非常大的数字(例如 9106524608436223400)。查看 Chrome 中的网络分析器,我可以看到数字正在正常下降,但是当 $http.get() 有它的回调命中时,数字会有些损坏。我认为这是因为数字非常大而不是字符串。有什么方法可以让 Angular 正确处理此响应,或者我是否需要将服务器的输出包装为字符串?谢谢
JavaScript 中的数字是 double precision floating point 个数字。这意味着它们只能处理高达 52 位的全精度整数。
任何解析 JSON 的代码都无法将数字表示为 JavaScript 中的常规数字。
JSON standard 没有对数字的范围或精度指定任何限制。然而,由于 JSON 是基于 JavaScript 语法的一个子集,有人可能会争辩说该格式不支持 JavaScript.[=12= 中可以表示的数字之外的数字。 ]
要安全地获取未更改的值,您需要将其作为字符串放入 JSON,或者将其拆分为两个或更多更小的数字。