我有一个名为sellerparams的表,其中有许多列,其中一个列名为probabilityinc。此列的类型为float
我不明白为什么第二个查询没有像我期望的那样工作。
第一次查询和结果

mysql> select id,probabilityinc from temp.sellerparams;
+----+----------------+
| id | probabilityinc |
+----+----------------+
|  1 |            0.3 |
|  2 |            0.3 |
|  3 |            0.3 |
|  4 |            0.4 |
+----+----------------+
4 rows in set (0.01 sec)

第二个查询和结果(意外?)
mysql> select id from temp.sellerparams where probabilityinc=0.4;
Empty set (0.00 sec)

如您所见,有一行probabilityinc=0.4。为什么第二个select返回空?这与浮点数的内部表示有关吗?如果是,如何根据float类型的列进行选择?
谢谢您。

最佳答案

您应该将列类型更改为numericfloat在设计上是不准确的。而像0.4这样的数字可能略有不同。这就是为什么如果数字存储为0.4
例如,您可以使用0.39999999
the doc

10-04 18:36