首页 > 解决方案 > Python aiohttp 响应编号已更改

问题描述

我目前在客户端-服务器应用程序上面临一个奇怪的行为。

服务器是用python编写的,使用aiohttp并返回一个带有很多id(数字类型)的json。每个 id 都会被更改。我在返回之前在服务器中打印了响应,它包含正确的 ID。

示例 ID: 481439269479645194、190601736623226882、338222603829510164

但是,在浏览器网络面板中,我可以看到该号码已更改。最后一位数字不同。

以上示例: 481439269479645200、190601736623226880、338222603829510140

我无法确定这些 id 在何处以及如何更改。

标签: pythonjsonrestaiohttp

解决方案


浏览器中的数字存储为 64 位浮点数。可以准确表示的最大整数是 9007199254740991。您的数字远远大于并且是近似的。例如:

console.log([481439269479645194, 190601736623226882, 338222603829510164])

将打印:

[481439269479645200, 190601736623226880, 338222603829510140]

您可以改用BigInt来操作这些数字,但您必须将它们存储在 JavaScript 源代码和 JSON 中作为字符串:

console.log([BigInt("481439269479645194"), BigInt("190601736623226882"), BigInt("338222603829510164")])

推荐阅读