python - Python aiohttp 响应编号已更改
问题描述
我目前在客户端-服务器应用程序上面临一个奇怪的行为。
服务器是用python编写的,使用aiohttp并返回一个带有很多id(数字类型)的json。每个 id 都会被更改。我在返回之前在服务器中打印了响应,它包含正确的 ID。
示例 ID: 481439269479645194、190601736623226882、338222603829510164
但是,在浏览器网络面板中,我可以看到该号码已更改。最后一位数字不同。
以上示例: 481439269479645200、190601736623226880、338222603829510140
我无法确定这些 id 在何处以及如何更改。
解决方案
浏览器中的数字存储为 64 位浮点数。可以准确表示的最大整数是 9007199254740991。您的数字远远大于并且是近似的。例如:
console.log([481439269479645194, 190601736623226882, 338222603829510164])
将打印:
[481439269479645200, 190601736623226880, 338222603829510140]
您可以改用BigInt来操作这些数字,但您必须将它们存储在 JavaScript 源代码和 JSON 中作为字符串:
console.log([BigInt("481439269479645194"), BigInt("190601736623226882"), BigInt("338222603829510164")])