我无法理解MySQL的DECIMAL.我需要行能够包含00.0001到99.9999之间的任何数字.我将如何构建它以便像这样工作?
Ale*_*rey 420
双列不一样的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
);
Run Code Online (Sandbox Code Playgroud)
列定义遵循DECIMAL(M,D)格式,其中M是最大位数(精度),D是小数点右边的位数(刻度).
这意味着上一个命令创建一个接受-99.9999到99.9999之间值的列.您还可以创建一个UNSIGNED DECIMAL列,范围从0.0000到99.9999.
有关MySQL DECIMAL的更多信息,官方文档始终是一个很好的资源.
请记住,所有这些信息都适用于MySQL 5.0.3及更高版本.如果您使用以前的版本,您真的应该升级.
小智 53
虽然上面的答案似乎是正确的,但只是一个简单的解释,让您了解它是如何工作的.
假设您的列设置为DECIMAL(13,4).这意味着该列的总大小为13位,其中4位将用于精确表示.
因此,总而言之,对于该列,您的最大值为: 999999999.9999