首页 > 解决方案 > 为什么一个数字的最后2位变成0?

问题描述

利用

嗨,所以我正在使用我存储在数据库中的一些用户 ID 来开发我的不和谐机器人,然后我将返回 ping 他们或给他们角色。

问题

虽然这是问题所在,但在数据库中它们从 ex:533692905387196429变为533692905387196400. 我尝试将它设置为一个字符串,它在数据库中工作,它完全按照它应该的方式存储。但是,当我从数据库中取回它们并将它们转换为数字或整数时,它们又会变成 ex: 533692905387196400

尝试使用

我尝试使用parseInt()parseFloat()Number()它们都给出了相同的结果。

更多信息

此外,如果我删除 2 个数字,例如:53369290538719642919从那里删除,它将返回533692905387(19)6429而不是533692905387196429和而不是533692905387196400.

任何帮助表示赞赏!

标签: javascriptnode.jsdiscorddiscord.js

解决方案


因此,Number.MAX_SAFE_INTEGER是 9007199254740991(即 2 53 - 1)。您的数字太大而无法保持完全精确。

如果您想要一个具有该级别数字和精度的数字,您可以使用BigInt,然后您必须非常小心如何使用它,BigInt因为它不能直接用于代替常规Number类型,但它可以保持无限精度并且您可以在两个 BigInt 值之间进行数学运算。

它是最好用作 aBigInt还是String真正取决于你用它做什么。如果这些只是某种您实际上并未进行数字运算的 ID,那么您可以将其保留为字符串。


推荐阅读