如何停止在 MySQL 中舍入 int 值
Posted
技术标签:
【中文标题】如何停止在 MySQL 中舍入 int 值【英文标题】:How can I stop rounding int values in MySQL 【发布时间】:2020-11-24 23:34:34 【问题描述】:我是 Discord 机器人开发人员。我正在尝试将 mysql 用于我的不和谐机器人。我正在尝试将公会 ID 保存在我的表中。当我发布到表格时,公会 ID 会自动四舍五入。 例如,我的公会 ID 是 837465019283745861。它的发布类似于 837465019283745900。 我正在使用 mysql 模块。
我的桌子:
CREATE TABLE guilds (
id INT PRIMARY KEY AUTO_INCREMENT,
guild_id BIGINT(18) NOT NULL);
我的邮政编码:
const guild = 837465019283745861;
connection.query('INSERT INTO guilds (guild_id) VALUES (?)', guild, function(error, results, fields)
if (error) throw error;
console.log('Data sent!');
);
【问题讨论】:
【参考方案1】:这些值不会在 MySQL 中四舍五入。那是 javascript 搞砸了你,因为你没有使用 BigInt
:
const guild = 837465019283745861n;
除非另有说明,否则 JavaScript 中的所有数字实际上都是浮点数。这会导致对较大数字进行四舍五入。
【讨论】:
【参考方案2】:要解决这个问题,请将“supportBigNumbers”添加到您的 MySQL 配置中
例子:
const database =
host: env.db_host,
port: env.db_port,
user: env.db_user,
password: env.db_password,
database: env.db_name,
supportBigNumbers: true // BigInt not rounded now
;
查看更多信息:https://www.npmjs.com/package/mysql#getting-the-id-of-an-inserted-row
【讨论】:
以上是关于如何停止在 MySQL 中舍入 int 值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Java 中舍入整数除法并获得 int 结果? [复制]