mysql数据库中的十进制精度

时间:2014-03-06 04:01:37

标签: mysql

我有一个代表金钱的专栏,可以有两位小数,所以我用过:

'price' DECIMAL(2)

但是在看了一下后我看到了类似的东西:

'price' DECIMAL(6,2)

2之间有什么区别?

我想拥有的是任意数量的数字,但是将小数位数限制为2,是第一个正确吗?

3 个答案:

答案 0 :(得分:3)

DECIMAL Documentation

  

在标准SQL中,语法DECIMAL(M)等同于DECIMAL(M,0)。类似地,语法DECIMAL等同于DECIMAL(M,0),其中允许实现决定M的值.MySQL支持这两种DECIMAL语法的变体形式。 M的默认值为10

'price' DECIMAL(6,2)
  

在这个例子中,6是精度,2是刻度。精度表示为值存储的有效位数,刻度表示小数点后可存储的位数。

'price' DECIMAL(2)
  

如果比例为0,则DECIMAL值不包含小数点或小数部分。

换句话说:该字段可以有6位数字,其中2位必须位于小数点后面。

答案 1 :(得分:1)

根据 mysql documentation

  

DECIMAL列的声明语法是DECIMAL(M,D)。该   MySQL 5.1中参数的值范围如下:

     

M是最大位数(精度)。它的范围是1   (较早版本的MySQL允许范围为1到254.)

     

D是小数点右边的位数(   规模)。它的范围为0到30,且不得大于M.

答案 2 :(得分:1)

DECIMAL列的语法是DECIMAL(M,D),其中

M:最大位数

D:小数点右边的位数。

参考:https://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html