MySQL - 存储大于1的数字,带有大量小数位

时间:2011-03-29 00:39:49

标签: mysql floating-point decimal

我需要使用具有许多小数位的准确数字。如果我使用类型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)将成功。去图。

2 个答案:

答案 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的数字。