我试过用(2,2)使用DECIMAL,但它不会让我使用它。如何在MySQL中存储小数?
我只是想存储一个数字,例如7.50或10.50。我需要在小数点后保留两个数字,但是当我刷新数据库时,它会将值重置为0.99。有什么建议么?
我试过用(2,2)使用DECIMAL,但它不会让我使用它。如何在MySQL中存储小数?
我只是想存储一个数字,例如7.50或10.50。我需要在小数点后保留两个数字,但是当我刷新数据库时,它会将值重置为0.99。有什么建议么?
DECIMAL
声明的第一个数字是总数数字。您可能想要使用DECIMAL (4, 2)
。这允许小数点前两位数字和后两位数字。
文档:https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html
它们语法是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.
CREATE TABLE IF NOT EXISTS `table_name` (`id` int(11) NOT NULL AUTO_INCREMENT,`cost` DECIMAL(10, 2) NOT NULL);
较大这将使成本柱保存总共10位数字,8之前和2小数点后。
从INT更改领域FLOAT
的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
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位数。
可能重复的[如何在SQL Server中存储十进制值?](http://stackoverflow.com/questions/813287/how-to-store-decimal-values-in-sql-server) – Arun