当我尝试从1.1过滤到1.2时 - 我从活动记录中看到数组中的结果。当我试图请求1.1到1.1(精确权重)时,yii返回空数组。
我尝试从调试工具栏复制请求,在mysql控制台中执行它,mysql正确返回所有结果。
请求:
SELECT `Diamonds`.* FROM `Diamonds`
LEFT JOIN `DiamondsSpecialGroups`
ON `Diamonds`.`specialGroup` = `DiamondsSpecialGroups`.`id`
WHERE (((((`endPrice` >= 500)
AND (`type` IN (0, 1, 2, 3))) AND ((`active`=1)
AND (`internalBlock`=0)
AND (`frontendHide`=0)))
AND (`Weight`=0.39))
AND (`endPrice` >= '500'))
AND (`endPrice` <= '1323231')
ORDER BY `endPrice`
LIMIT 50
如果我删除
(`Weight`=0.39)
所有结果都在mysql和yii中播种。
最后问题 - 为什么?
答案 0 :(得分:1)
=
和浮动很难。
浮点数永远不会100%准确我认为问题可能是0.39
的两个不同实例彼此略有不同。
为了避免这种情况,您可以使用DECIMAL代替FLOAT,如我在下面发布的答案中所建议的那样。