我一直致力于在数据库表中插入大量数字的项目。现在我完成了代码,我正在检查错误的值,我注意到我的值3075277将在3075280中转换,当插入db并且3075255将是3075260时。
colummn类型是Float。我应该更改什么才能禁用舍入?这个甚至没有小数位数,为什么它会像那样圆?我使用默认选项,只将更改的排序更改为utf8_general_ci,并将类型更改为varchar和lenght in some,并浮动到其他位置。
答案 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
。
尽管FLOAT
和DOUBLE
相似,因为它们将值存储在近似值中,但DOUBLE为8字节,FLOAT
为4字节。
FLOAT用于单精度,而DOUBLE用于双精度数。
MySQL对单精度值使用4个字节,对双精度值使用8个字节。
与浮点数和十进制(数字)数字有很大不同,您可以将它们与DECIMAL数据类型一起使用。与浮点数不同,它用于存储精确的数值数据,其中保留精确的精度很重要,例如使用货币数据。
在您的情况下,对于较大的数字,您需要DOUBLE
而不是FLOAT
。