39

我已经尝试将 DECIMAL 与 (2,2) 一起使用,但它不会让我使用它。

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

4

6 回答 6

71

DECIMAL声明的第一个参数是位数。您可能想使用DECIMAL (4, 2). 这允许小数点前最多两位数和小数点后两位数。

文档:https ://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html

于 2013-05-18T22:55:47.787 回答
25

语法为 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 到 65。(旧版本的 MySQL 允许的范围是 1 到 254。)

D 是小数点右侧的位数(刻度)。它的范围是 0 到 30,并且不能大于 M。

于 2013-05-18T23:01:47.617 回答
4
CREATE TABLE IF NOT EXISTS `table_name` (`id` int(11) NOT NULL AUTO_INCREMENT,`cost` DECIMAL( 10, 2 ) NOT NULL);

这将使成本列共有 10 位数字,小数点前 8 位和小数点后 2 位。

于 2014-04-15T11:14:52.853 回答
1
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 位在小数点后。

IE

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

于 2017-12-05T04:13:50.797 回答
0

来自 mysql 文档

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

于 2017-10-31T06:34:33.880 回答
-5

将您的字段从 INT 更改为 FLOAT

于 2016-10-13T16:31:24.907 回答