javascript - 为什么在 JavaScript 中收到我的个人推文 ID 号时,最后几位数字变为 "0"?

标签 javascript python json numbers

我正在使用 Tweepy python 库访问 Twitter API 以检索加密货币推文。我的应用程序使用 Django 后端和 ReactJs 前端。虽然我的网络应用程序将显示检索到的推文本身,但我还打算提供一个可点击的链接,以重新路由到 Twitter 上的原始推文。

我的 Django Rest Framework API 在返回 JSON 时正在完整检索正确的推文 ID 号。但是,当我从 Rest Framework API 检索到前端时,推文 ID 号的最后几位数字更改为“0”。我想知道这是否是 Twitter 使用的默认保护措施?

Django Rest API:

…
"bitcoin_tweet_user": "TheStarPhoenix",
"bitcoin_tweet": "Teslas can now be bought for bitcoin, Elon Musk says […]",
"bitcoin_tweet_link": 1375092596339585038,
…

网站前端:

enter image description here

App.js:

<div className="center-column-tweet">
    <div className="item-row-tweets">
        <div className="left">
            <span>
                <b>@{tasks.bitcoin_tweet_user}</b><br/><br/>
                "{tasks.bitcoin_tweet}"<br/>
                <b>Link:</b> https://twitter.com/twitter/statuses/{tasks.bitcoin_tweet_link}
            </span>
         </div>
     </div>
</div>

最佳答案

您已成为浮点舍入的受害者。

JSON 中的数字值大致表示为十进制数字序列,可选地后跟小数点,然后更多数字0,原则上,数字序列可以是任意长。然而,这并不意味着每个 JSON 实现实际上都支持任意大的数字并准确地保留它们的值:Python 的 json 模块确实如此(至少对于整数),因为该语言支持任意大的整数:一个内置功能,但大多数其他实现没有。在实践中,JSON 数字通常被解析为 IEEE 754 double 浮点值;当遇到无法用该数字格式精确表示的值时,该数字通常会四舍五入到最接近的可表示值。这是 JavaScript 中发生的情况:数字 1375092596339585038 太大,无法用 JavaScript 数字类型精确表示,因此,当在 JavaScript 端解析它时,它会四舍五入到最接近的可表示值,然后打印为 1375092596339585000 .

(the original JSON specification 没有定义每个实现都必须支持的任何数字范围,也没有定义当无法准确解析值时应该发生什么,是 the many flaws in JSON 之一。)

您应该更改 API,以便将推文 ID 作为字符串而不是数字返回。鉴于推文 ID 无论如何都不是一个数量(例如,没有理由对其执行算术),因此您不会因为这样做而损失太多。


0 为了简单起见,我没有提及指数表示法。

关于javascript - 为什么在 JavaScript 中收到我的个人推文 ID 号时,最后几位数字变为 "0"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66801873/

相关文章:

javascript - 使用 html 的 javascript 显示特定时区的日期/日期和时间

javascript - 隐藏列时的html colspan问题

javascript - 该函数会在返回之前等待异步函数完成吗?

python - 使用 SQLAlchemy 查询到 Pandas DataFrame 时重命名列

python - python Flask 搜索应用程序出现路由错误

python - 如何从字符串列表中提取数字?

java - 如何从 REST post 请求中解析 Json 数组

javascript - Controller ---工厂: passing parameters

javascript - 处理来自 JSON 的 POST 数组对象,避免错误 ECONNREFUSED 套接字挂起

json - Haskell Servant 自定义 JSON 解析错误