Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
phpMyAdmin浮点禁用舍入数_Php_Mysql_Sql_Sqldatatypes - Fatal编程技术网

phpMyAdmin浮点禁用舍入数

phpMyAdmin浮点禁用舍入数,php,mysql,sql,sqldatatypes,Php,Mysql,Sql,Sqldatatypes,我一直在做一个项目,在数据库表中插入了很多数字。现在我已经完成了代码,我正在检查这些值是否有错误,我注意到我的值3075277在插入db时会在3075280中转换,3075255将是3075260 Column类型是Float。我应该更改什么以禁用舍入?这一个连小数都没有,为什么它会这样舍入?我使用默认选项,只将排序规则更改为utf8\u general\u ci,并在某些情况下将类型更改为varchar和lenght,在其他情况下将类型更改为float。现在您使用的是float类型,但由于在数

我一直在做一个项目,在数据库表中插入了很多数字。现在我已经完成了代码,我正在检查这些值是否有错误,我注意到我的值3075277在插入db时会在3075280中转换,3075255将是3075260


Column类型是Float。我应该更改什么以禁用舍入?这一个连小数都没有,为什么它会这样舍入?我使用默认选项,只将排序规则更改为utf8\u general\u ci,并在某些情况下将类型更改为varchar和lenght,在其他情况下将类型更改为float。

现在您使用的是
float
类型,但由于在数据库中保存了较大的十进制数,因此出现了错误。你应该选择双倍

虽然
FLOAT
DOUBLE
相似,因为它们以近似值存储值,但DOUBLE是8字节,而
FLOAT
是4字节

浮点表示单精度,而双精度表示双精度数字

MySQL使用四个字节表示单精度值,八个字节表示双精度值

浮点数和十进制(数值)数有很大的区别,可以与十进制数据类型一起使用。这用于存储精确的数字数据值,与浮点数不同,在浮点数中,保持精确精度很重要,例如对于货币数据


因此,与您的情况一样,对于较大的数字,您可能希望使用
DOUBLE
而不是
FLOAT

此问题与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的财富?

只需将数据类型更改为BIgINT并检查结果。我需要能够存储带小数的数字,因此我认为浮点运算是最好的,也更容易处理。然后你可以选择double。好的,我要试试。但如果我可以问的话,为什么不浮动呢?这是正常的行为吗?双重标准解决了这个问题。这会让记忆变得更难吗?我希望可以使用大约250个collumns。谢谢,到时候我会用的。我觉得奇怪,为什么没有发生在所有的数字上,我猜只有大数字。