mysql浮点数据类型将值舍入到小数点后6位

mysql浮点数据类型将值舍入到小数点后6位,mysql,floating-point,rounding,type-conversion,Mysql,Floating Point,Rounding,Type Conversion,我有一个table say table1,其中有一个数据类型为float say field1的字段。此字段中的值都是唯一的,最多保留8位小数 我在此表上执行了以下查询: SELECT COUNT(*) FROM table1; SELECT * FROM table1; 结果是查询的记录总数:5179 结果与总记录的结果相同:5179 以上两个结果表明字段1中的值是唯一的 但当我在此表上运行以下查询时: SELECT COUNT(*) FROM table1; SELECT * FROM

我有一个table say table1,其中有一个数据类型为float say field1的字段。此字段中的值都是唯一的,最多保留8位小数

我在此表上执行了以下查询:

SELECT COUNT(*) FROM table1;
SELECT * FROM table1;
结果是查询的记录总数:5179

结果与总记录的结果相同:5179

以上两个结果表明字段1中的值是唯一的

但当我在此表上运行以下查询时:

SELECT COUNT(*) FROM table1;
SELECT * FROM table1;

两个查询都给出了字段1中的值四舍五入到小数点后5位的结果。显示了大多数相同的值

这是因为数据类型浮动

那么为什么DISTINCT函数得到的是实际存储的值,而不是四舍五入的值呢

编辑:


四舍五入的值仅为大于1的值。对于<0的值,它工作得非常完美。

是的,我知道了……我想知道在这种情况下,Distinct是如何工作的。舍入当然是因为数据类型。COUNTDISTINCTfield1行为可能是因为MySQL如何生成临时表来统计不同的非索引记录,或者是因为您在字段上使用了唯一的约束。@Crontab:谢谢。。。该字段没有唯一约束。正如您所解释的,这一定是DISTINCT的功能…再次感谢。为什么不使用group by子句?@Sagar这篇文章太旧了…仅供参考,这是为了确定DISTINCT对不同数据类型的工作方式有多不同…而不是对任何查询…当浮点数可能对同一个数字给出不同的值时,您如何应用group by在第10000个或更多位置的小数点后。。。