我无法完全理解MySQL的DECIMAL。我需要该行能够包含从00.0001到99.9999之间的任意数字。我将如何构造它以像这样工作?如何使用MySQL DECIMAL?
回答
双列不一样DECIMAL列,并且会遇到麻烦得到,如果你使用双列的财务数据。
DOUBLE实际上只是一个双精度(64位而不是32位)版本的FLOAT。浮点数是real numbers的近似表示,它们不是精确的。实际上,像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的更多信息,official docs始终是一个很好的资源。
请记住,所有这些信息对于MySQL 5.0.3及更高版本都是正确的。如果你使用的是以前的版本,你应该升级。
投了你的答案。你的答案是正确的,另一个答案是不正确的(因为它声称“double = decimal”)。 DECIMAL是一个具有精确值的定点类型,它的同义词是NUMERIC,DEC和FIXED。不是DOUBLE,因为DOUBLE是表示近似数值数据值的浮点类型。使用DECIMAL(<1-65>,<0-30>)时,第一个参数是位数,第二个参数是小数点右边的位数。 – Norbert
是的,你是对的。请注意,这是MySQL 5.0.3以上的工作,http://dev.mysql.com/doc/refman/5.1/en/precision-math-examples.html – ajreal
@ajreal - 你能修改你的答案吗?提前致谢。 – dezso
MySQL 5.x specification十进制数据类型是:DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
。上面的答案在说无符号小数不可能是错误的。
要定义一个只允许无符号小数的字段,总长度为6位,其中4位是小数,您可以使用:DECIMAL (6,4) UNSIGNED
。
您也可以创建无符号(即非负)FLOAT和DOUBLE数据类型。
虽然上面的答案似乎是正确的,但只是一个简单的解释,让你知道它是如何工作的。
假设您的列设置为DECIMAL(13,4)
。这意味着该列的总大小为13位,其中4个将用于精确表示。
所以,总之,对于列,你将有一个最大值:999999999,9999
这帮助我完全理解了这个概念。 –
- 1. Mysql DECIMAL存储
- 2. 如何在PHP中使用MySQL Decimal数据类型?
- 3. mysql decimal(10,2)extract java
- 4. MySQL中的DOUBLE和DECIMAL
- 5. MySQL DECIMAL数据类型
- 6. 即使使用DECIMAL,MySQL也无法处理大数值
- 7. 如何使用null作为带有LOAD DATA的mysql decimal字段的默认值?
- 8. 使用DECIMAL的原因(31,0)
- 9. 使用DECIMAL输入(php,mysql)更新输入
- 10. Java:如何将MySQL DECIMAL(39,0)IP地址转换为字符串
- 11. 如何将DECIMAL插入到MySQL数据库中
- 12. 将DECIMAL(16,4)转换为DATETIME MySQL
- 13. MySQL DECIMAL(3,2)尾随零不显示
- 14. MySQL列POINT vs 2x DECIMAL(lat&lng)性能
- 15. INT与DECIMAL在MySQL中的“价格”列?
- 16. 如何使用DB2中的前导零转换decimal到varchar?
- 17. 如何使用NET Math.Round(<decimal>,<int>,MidpointRounding.AwayFromZero)
- 18. 如何使用Decimal和Signed制作文本字段?
- 19. NamedParameterJdbcTemplate jconnect decimal issue
- 20. javascript floating decimal
- 21. C#Regex.Match to decimal
- 22. Decimal to JSON
- 23. Math.Round()decimal c#
- 24. c#sizeof decimal?
- 25. 如何使用货币在MySQL和PHP
- 26. 如何为dbtype decimal传递空值?
- 27. 如何将货币转换为Decimal vb.net?
- 28. SQL DataType Negative Decimal
- 29. PHP中的PHP DECIMAL处理
- 30. 如何使用MYSQL
*(参考)* http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html –
你应该真的接受正确的答案。目前接受的答案是错误的。 – Olhovsky
在这里结束并阅读声明DECIMAL UNSIGNED不可能的答案。请参阅下面的新答案,了解正确的规格。 –