我需要使用具有许多小数位的准确数字。如果我使用类型decimal
(因为浮点数不够精确,不能存储这些数字),我可以使用类似0.003352466
的内容,并且可以准确保存。但是,如果我将该数字设置为大于1,则无法执行此操作1.003352466
将无法存储。
如何将两种类型的数字存储在一列中?
比如,如果一行的值为0.003352466
但下一行需要存储1.003352466
,我该怎么做?我无法弄清楚这一点。
仅供参考我最初尝试过DECIMAL(10,10)并且遇到了与上述相同的失败。
编辑:
我已尝试指定DECIMAL(2,10)
但由于左侧的数字必须等于或大于右侧的数字而失败。所以我尝试了DECIMAL(10,10)
并且无法写入数据库。正如我上面提到的,它会让我输入0.003352466
但不能1.003352466
解决方案......使第一个数字大于第二个数字,它可以正常工作!
DECIMAL(10,10)
将无法按照提及进行编写,但DECIMAL(10,9)
将成功。去图。
答案 0 :(得分:3)
您可能有一个错误的表定义(小心显示它?)。来自manual:
DECIMAL的声明语法 列是DECIMAL(M,D)。范围 MySQL 5.1中参数的值 如下:
M是最大位数( 精确)。它的范围是1到65。 (较早版本的MySQL允许使用 范围为1到254.)
D是右边的位数 小数点(比例)。它 范围为0到30,必须为no 大于M.
因此,DECIMAL(11,9)
在这种情况下会起作用,根据需要进行更改。
答案 1 :(得分:2)
为您的领域声明提供精确度。
DECIMAL(N, M)
表示“N
位数总计,M
小数位”。
说,DECIMAL(10, 2)
允许您存储从0.00
到±99999999.99
的数字。