MySQL double 运算符的精度

标签 mysql precision

我正在尝试在 MySQL (InnoDb) 中存储货币值,我需要编写查询来聚合一些记录(总和),但我在输出精度方面遇到问题!

我已将字段的类型设置为 double,并且我的值有些精确,但 MySQL 的运算符没有我需要的那么精确。无论如何,PHP 的默认运算符也不够精确,但 PHP 中的 bc* 函数可以做到这一点。

我想知道是否有办法调整 MySQL 运算符的精度?包括聚合函数?

根据记录,存储到 MySQL 和从 MySQL 检索不会影响我的值,这意味着 double 是我的字段的理想类型。

最佳答案

由于货币需要精确的表示,因此不要使用近似的数据类型,例如浮点型 double。您可以使用定点数字数据类型,例如

 numeric(15,2)
  • 15 是精度(包括小数位的值的总长度)
  • 2是小数点后的位数

参见MySQL Numeric Types :

These types are used when it is important to preserve exact precision, for example with monetary data.

关于MySQL double 运算符的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24350585/

相关文章:

java - [Java] 插入 SQL 时出错,表中自动递增 - userId

MySQL,UTF-8,字符排序

java - Java 中从 double 转换为 int 时丢失精度

控制 double

javascript - 0.5时向上或向下舍入

c - 从 C 中的 float 转换整数的不一致舍入

mysql - 如何在共享数据库环境中为 mysql my.ini 文件提供自定义配置

mysql - gcloud 无法访问云 sql

java - 在 JDBC 插入中用随机数填充的 BigDecimal 变量

php - 无法更新数据 : SQL syntax error in my update command