【发布时间】:2020-11-28 10:36:35
【问题描述】:
let string = `{"access_token": "someThingsHere", "user_id": 17841436766171705}`;
let resultObject = JSON.parse(string);
console.log(resultObject);
输出:
{access_token: "someThingsHere", user_id: 17841436766171704};
这里的“user_id”已更改。但为什么?请帮我描述一下。
【问题讨论】:
-
IEEE-754 double-64 只有~17 位相对精度。对于 INTEGERS,这是一个明显的范围,其正限制为 ~2^53,小于原生 int64 (2^64) 类型。理想情况下,源将使用不透明字符串而不是数字。到 int32 就可以了。
-
stackoverflow.com/a/13502497/2864740 — 在 JSON 中没有“强烈”指定限制,尽管将整数保持为 int32 将避免 JSON JS 转换问题,例如遇到的问题。像 Json.NET 之类的一些提供程序可以在 int64 上正常工作。 (很少有语言支持将 int53 作为离散限制,因此这不是一个有趣的断点。)
标签: javascript json string