我有一些来自需要存储在我的数据库中的服务器的值。我不是MySQL专家,但我对基本输入/输出的理解非常好。现在我正在尝试确定存储以下小数时我应该使用的长度。
tax_rate [DECIMAL ?,?]: value(0.014840000000)
units [DECIMAL ?,?]: value(1.00)
initial_charge [DECIMAL ?,?]: value(2.5110)
charge [DECIMAL ?,?]: value(2.8967)
link_tax [DECIMAL ?,?]: value(0.385652)
exempt [DECIMAL ?,?]: value(0.0000)
tax [DECIMAL ?,?]: value(0.042986)
base_price [DECIMAL ?,?]: value(41.8500)
我希望有人可以建议我需要使用这些值的正确尺寸AS WELL解释他们为什么选择这些值。或者链接到一篇深入解释MySQL小数的文章。
任何帮助都将不胜感激。
谢谢!
-------的修改 --------
阅读MySQL文档后,确定十进制类型的大小有一个非常好的解释。这些是我为我的用例设置的大小:
tax_rate [DECIMAL 15,12]: value(0.014840000000) ? max(999.999999999999)
units [DECIMAL 6,2]: value(1.00) ? max(9999.99)
initial_charge [DECIMAL 9,4]: value(2.5110) ? max(99999.9999)
charge [DECIMAL 9,4]: value(2.8967) ? max(99999.9999)
link_tax [DECIMAL 9,6]: value(0.385652) ? max(999.999999)
exempt [DECIMAL 9,4]: value(0.0000) ? max(9999.9999)
tax [DECIMAL 10,6]: value(0.042986) ? max(999999.999999)
base_price [DECIMAL 10,4]: value(41.8500) ? max(999999.9999)
答案 0 :(得分:30)
来自MySQL:
DECIMAL列的声明语法是DECIMAL(M,D)。该 MySQL 5.1中参数的值范围如下:
M是最大位数(精度)。它的范围是1 (较早版本的MySQL允许范围为1到254.)
D是小数点右边的位数( 规模)。它的范围为0到30,且不得大于M.
考虑这个数字:123456789.12345此处M
为14
而D
为5
则根据此原则,您可以为每列设置DECIMALS(M,D)在他们预期的最大值。
答案 1 :(得分:0)
由于接受的答案使我很想念,因此我在包含多个定义为item
的列的表上运行SHOW CREATE TABLE
(请注意,缺少 M 和 D 。
结果如下。
DECIMAL DEFAULT NULL
前述使得M和D的默认值不言而喻; M = 10 ,而 D = 0 。不用说,这几乎肯定不是期望的结果。
您应始终指定您的M和D值。