phpMyAdmin Float禁用轮数

时间:2017-02-01 14:42:50

标签: php mysql sql sqldatatypes

我一直致力于在数据库表中插入大量数字的项目。现在我完成了代码,我正在检查错误的值,我注意到我的值3075277将在3075280中转换,当插入db并且3075255将是3075260时。

colummn类型是Float。我应该更改什么才能禁用舍入?这个甚至没有小数位数,为什么它会像那样圆?我使用默认选项,只将更改的排序更改为utf8_general_ci,并将类型更改为varchar和lenght in some,并浮动到其他位置。

2 个答案:

答案 0 :(得分:1)

这个问题与MySQL有关,而不是Phpmyadmin。

FLOAT有6-7个有效数字的精度,正如您所看到的那样。 “有效数字”,我的意思是从任何地方开始:

1234567xxxx.
      12345.67xxx
          1.234567xxx
          0.0000001234567xxx

xxx可能是零或某种'噪音',而不是您放入列中的原始值。

DOUBLE为您提供了16位有效数字。

DECIMAL(9,0)给出小数点左边的9位数,之后没有。有点像INT

DECIMAL(9,4)会在该点的左侧显示5(9-4)个数字; 4之后。

您存储的是哪种号码?钱?科学测量?天文距离? DT的财富?

答案 1 :(得分:0)

现在您正在使用FLOAT类型但由于您在数据库中保存了大的十进制数而收到错误。你应该去DOUBLE

尽管FLOATDOUBLE相似,因为它们将值存储在近似值中,但DOUBLE为8字节,FLOAT为4字节。

FLOAT用于单精度,而DOUBLE用于双精度数。

MySQL对单精度值使用4个字节,对双精度值使用8个字节。

与浮点数和十进制(数字)数字有很大不同,您可以将它们与DECIMAL数据类型一起使用。与浮点数不同,它用于存储精确的数值数据,其中保留精确的精度很重要,例如使用货币数据。

在您的情况下,对于较大的数字,您需要DOUBLE而不是FLOAT