2013-05-18 52 views
28

我试过用(2,2)使用DECIMAL,但它不会让我使用它。如何在MySQL中存储小数?

我只是想存储一个数字,例如7.50或10.50。我需要在小数点后保留两个数字,但是当我刷新数据库时,它会将值重置为0.99。有什么建议么?

+0

可能重复的[如何在SQL Server中存储十进制值?](http://stackoverflow.com/questions/813287/how-to-store-decimal-values-in-sql-server) – Arun

回答

12

它们语法是DECIMAL(M,d)

米 - 总长度

d - 小数点

http://dev.mysql.com/doc/refman/5.6/en/fixed-point-types.html

的数字权

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

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

d是数字在小数点右侧的编号( 刻度)。它有一个范围为0到30,并且必须是不大于M.

2
CREATE TABLE IF NOT EXISTS `table_name` (`id` int(11) NOT NULL AUTO_INCREMENT,`cost` DECIMAL(10, 2) NOT NULL); 

较大这将使成本柱保存总共10位数字,8之前和2小数点后。

-3

从INT更改领域FLOAT

0

From mysql doc

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

  • M是最大位数(精度)。它的范围为 1至65.
  • D是小数点右边的小数位数(小数位数)。它有一个范围为0到30,并且必须是不大于M.
较大

NB: - M为总无。小数点前的位数+总数小数点后的数字。

在你的情况下,7.50总共没有3位数字,10.50总共没有4位数字。但宣布的最大数量。该列的位数是2,因此它可以存储最多两位数的值。你甚至不能存储1,因为它是1.00,即总共3位数。因此,列中允许的最大2位数值为.99

如果你想存储XX.XX,那么你必须声明(4,2),其中4是M和2是D.

如果你想的MySQL允许大小存储任意数量最大,那么你可以用(65,30)声明一个列。

Maximum no。的小数点= M之前的数字 - d

0
CREATE TABLE `salary` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`salary` DECIMAL(10,2) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 

DECIMAL(10,2)表示salary将保存总共10个数字外面2将小数点后。

小数点前8位数和小数点后2位数。