我正在写一个具有存储值的机器人。其中之一是18个地方。我可以将值作为BIGINT [20]正确地存储到我的数据库MySQL中。存储的值正确。
尝试获取该号码时出现问题。存储在数据库中的值是502033097630416897,但是mysql返回的实际值是502033097630416900。为进行比较,这里再次是:
502033097630416900
502033097630416897
似乎返回值已被四舍五入或已更改。我想检验这一理论,所以我将存储在MySQL中的值更改为较小的数字123、1234567,依此类推。返回的值实际上是正确的。由于某些原因,如果存储在MySQL中的数字太大,则返回的值不正确。我会发布用于存储的代码,但由于存储的实际值正确,因此我认为这无关紧要。
至于调用,我有一个可以获取多个return new的函数
Promise((success, fail) => {
con.query(`SELECT * FROM serversettings WHERE serverId = ${serverID}`, (err, rows) => {
switch(type){
case "onjoin":
success(rows[0].onjoin);
类型是我要提取的数据。任何见解都会有所帮助,谢谢!
答案 0 :(得分:0)
JavaScript使用64-bit IEEE 754 floating point数字进行算术运算。用这种算术,您的示例中的两个数字彼此相等。 IEEE 754仅提供约16位十进制数字。
要使用Javascript处理这些数字,您必须像使用文本字符串一样使用它们,或使用长数字包。
如果您将查询更改为
SELECT CAST(bigint_column AS CHAR) bigint_column, other, else, etc
FROM serversettings
...
您将获得字符串。