MySQL运营商的精确度是双倍的

时间:2014-06-22 11:01:33

标签: mysql precision

我正在尝试在MySQL(InnoDb)中存储货币值,我需要编写查询来聚合一些记录(总和),而且我对输出的精度有问题!

我已经将字段的类型设置为double,而我的值是精确的,但MySQL的运算符并不像我需要的那样精确。对于它的价值,PHP的默认运算符也不够精确,但PHP中的bc*函数可以解决这个问题。

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

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

1 个答案:

答案 0 :(得分:1)

由于资金需要精确表示,因此不要使用仅与double近似的数据类型,这是一个浮点数。您可以使用定点数字数据类型,如

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

请参阅MySQL Numeric Types

  

在保持精确精确度很重要时使用这些类型,例如使用货币数据。