我尝试过将DECIMAL用于(2,2),但它不会让我使用它。
我只想存储一个数字,例如7.50或10.50。我需要在小数点后保留两个数字,但是当我刷新数据库时,它会将值重置为0.99。有什么建议吗?
答案 0 :(得分:58)
DECIMAL
声明的第一位是总位数。您可能想要使用DECIMAL (4, 2)
。这允许小数点前最多两位数,后面两位数。
文档:https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html
答案 1 :(得分:16)
他们的语法是DECIMAL(M,D)
M - 总长度
D - 小数点右边的数字
http://dev.mysql.com/doc/refman/5.6/en/fixed-point-types.html
DECIMAL列的声明语法是DECIMAL(M,D)。该 MySQL 5.6中参数的值范围如下:
M是最大位数(精度)。它的范围是1 (较早版本的MySQL允许范围为1到254.)
D是小数点右边的位数( 规模)。它的范围为0到30,且不得大于M.
答案 2 :(得分: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 :(得分:0)
DECIMAL列的声明语法是DECIMAL(M,D)。参数的值范围如下:
- M是最大位数(精度)。它有一系列的 1至65岁。
- D是小数点右边的位数(刻度)。它的范围为0到30,且不得大于M.
注意: - 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)声明一列。
最大数量小数点前的数字= M - D
答案 4 :(得分: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位数。
答案 5 :(得分:-4)
将您的字段从INT更改为FLOAT