mysql - Node : MySQL returns inaccurate decimal values

标签 mysql node.js decimal

我有一个存储十进制值的 MySQL 数据库 (DECIMAL(32, 12))。 当我使用 HeidiSQL 选择值时,值显示正确(例如 15922.638440778302)。但是当我在 NodeJS 中使用 MySQL 绑定(bind) ( https://github.com/mysqljs/mysql ) 执行相同操作时,它会显示 15922.638440778303

我的 SQL 查询非常简单:

SELECT SUM(`amount`) FROM `balances`;

知道是什么导致了这种差异吗?也许我需要在 NodeJS 的 MySQL 初始化期间指定精度?目前,除了登录凭据,我没有指定任何内容:

let mysql = require('mysql').createPool({
  host: global.dbconfig['dbhost'],
  database: global.dbconfig['dbname'],
  user: global.dbconfig['dbuser'],
  password: global.dbconfig['dbpass']
})

最佳答案

将以下行添加到您的 mysql 配置中。

 supportBigNumbers: true
 bigNumberStrings: true

然后变成:

let mysql = require('mysql').createPool({
  host: global.dbconfig['dbhost'],
  database: global.dbconfig['dbname'],
  user: global.dbconfig['dbuser'],
  password: global.dbconfig['dbpass'],
  supportBigNumbers: true,
  bigNumberStrings: true,
})

有关连接选项的更多信息:docs

关于mysql - Node : MySQL returns inaccurate decimal values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48028240/

相关文章:

python - 类型错误:在字符串格式化期间、将数据上传到 Web sql 服务器期间,并非所有参数都被转换,

php - 如何在 PHP 中选择要与 PDO 一起使用的 MySQL 数据库?

node.js - Npm 安装错误键入 : command not found

c# - Oracle 数字到 C# 十进制

c++ - 如何获得除法中带有十进制数的结果? C++, 树莓派

c# - 我的 WinForm 正在获取 SQL 注入(inject)

MYSQL 5.6 Windows 命令行客户端自动关闭

node.js - 使用 nodejs 和 cheerio 解析脚本标签内容

node.js - javascript 中的 import * 代表什么?

javascript - Javascript 输入中的逗号分隔数字