MySQL Returns 只有当数字较大时才会出现错误值

MySQL Returns Wrong Value Only When Number Is Larger

我正在编写一个具有存储值的机器人。其中一个是18个名额。我能够将值作为 BIGINT[20] 正确存储到我的数据库 MySQL 中。存储的值是正确的。

尝试获取该号码时出现问题。存储在数据库中的值是 502033097630416897,但是 return 由 mysql 编辑的实际值是这个 502033097630416900。为了比较,这里又是:

502033097630416900
502033097630416897

似乎 return 值正在向上舍入或更改。我想验证这个理论,所以我将 MySQL 中存储的值更改为较小的数字,123、1234567 等等。 returned 的值实际上是正确的。由于某些原因,如果存储在 MySQL 中的数字太大,则 returned 的值不正确。我会 post 我的存储代码,但我认为这不相关,因为存储的实际值是正确的。

关于调用,我有一个函数可以获取多个return new

Promise((success, fail) => {
    con.query(`SELECT * FROM serversettings WHERE serverId = ${serverID}`, (err, rows) => {
        switch(type){
            case "onjoin":
                success(rows[0].onjoin);

其中type是我要拉取的数据。任何见解都会有所帮助,谢谢!

Javascript 使用 64-bit IEEE 754 floating point 数字进行算术运算。在那种算术中,您示例中的两个数字彼此相等; IEEE 754 仅提供大约 16 位十进制数字的精度。

要在 Javascript 中处理这些数字,您必须将它们当作文本字符串来处理,或者使用长数字包。

如果您将查询更改为

SELECT CAST(bigint_column AS CHAR) bigint_column, other, else, etc
  FROM serversettings 
  ...

你会得到字符串。