Answers:
双列不一样的DECIMAL列,你会遇到麻烦,如果你使用双列的财务数据。
DOUBLE实际上只是FLOAT的双精度(64位而不是32位)版本。浮点数是实数的近似表示,并不精确。实际上,像0.01这样的简单数字在FLOAT或DOUBLE类型中没有确切的表示形式。
DECIMAL列是精确的表示形式,但是它们占用的空间更多,而可能的数字范围更小。要创建一个能够保存从0.0001到99.9999的值的列,就像您要求的那样,您需要以下语句
CREATE TABLE your_table
(
your_column DECIMAL(6,4) NOT NULL
);
列定义如下格式DECIMAL(M,d)其中,中号是数字的最大数(精度)和d是位小数点(右边的数尺度)。
这意味着前面的命令将创建一列,该列接受-99.9999到99.9999之间的值。您也可以创建一个UNSIGNED DECIMAL列,范围从0.0000到99.9999。
有关MySQL DECIMAL的更多信息,官方文档始终是一个很好的资源。
请记住,所有这些信息对于MySQL 5.0.3及更高版本都是正确的。如果使用的是以前的版本,则确实应该升级。
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
。它将为负值返回超出范围的错误。您也可以创建未签名的FLOAT和DOUBLE。手册:dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
尽管上面的答案似乎是正确的,但只需简单的说明就可以了解其工作原理。
假设您的栏设为DECIMAL(13,4)
。这意味着该列的总大小为13位,其中4位将用于精确表示。
因此,总而言之,该列的最大值为: 999999999.9999