Angular / Javascript '舍入'长值

Angular / Javascript 'rounding' long values?

本文关键字:长值 舍入 Javascript Angular      更新时间:2023-09-26

我有以下JSON:

[{"hashcode": 4830991188237466859},{...}]

我有以下的Angular/JS代码:

var res = $resource('<something>');
...
res.query({}, function(json) {hashcode = json[0].hashcode;};
...

令人惊讶的是(对我来说,我不是JS专家),我发现某些东西(?)正在将值四舍五入到1000的精度(四舍五入最后3位数字)。这是一个问题,因为这是某个东西的哈希码。

另一方面,如果我将值作为字符串写入JSON,例如-

[{"hashcode": "4830991188237466859"},{...}]

这不会发生。但这对我造成了一个不同的问题(使用JMeter/JSON路径,通过运行我的查询$.hashcode提取值["4830991188237466859")-我不能用作HTTP请求参数(我需要将?hashcode=...添加到查询中,但我最终使用?hashcode=["..."]

)

所以我感谢你的帮助:

  1. 了解谁和为什么-是舍入我的散列,以及如何避免它
  2. JMeter/JSON路径帮助

谢谢!

  1. 每个系统架构都有一个它可以表示的最大数量。参见Number.MAX_VALUE或将您的号码粘贴到控制台。你会看到它发生在JavaScript级别,与angular无关。因为哈希值并不表示某物的数量,所以它是一个字符串是很自然的。这让我想到

  2. site.com/page?hashcode=4830991188237466859没有问题-它在那里被视为字符串,你应该继续这样对待它。

javascript Number类型是基于浮点数的,并且只能表示范围在-253和253之间的所有整数。因此,在此范围之外的一些整数将根据您的经验进行"舍入"。

关于JMeter JSON路径提取器插件,正确的JSON路径查询您的hashcode将看起来像

$..hashcode[0]

有关XPath到JSON的路径映射和更多细节,请参阅指南中的解析JSON章节。