2014-03-06 126 views
2

我代表金钱,可以有2位小数,所以我使用的列:小数精度在mysql数据库

'price' DECIMAL(2) 

但之后读出位我所看到的东西,如:

'price' DECIMAL(6,2) 

2的区别是什么?

我想要的是任何数字的数字,但将小数限制为2,是第一个正确的?

+2

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

回答

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

换句话说:这个字段可以有'6'位其中'2'位将在小数点后面('0000.00' - '9999.99')。 – h2ooooooo

+0

@ h2ooooooo先生更新了你的句子 –

1

作为每mysql documentation

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

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

D是小数点右边的数字位数( 比例)。它有30个的范围为0,并且必须是不大于M.