我正在尝试比较两个 float 。 我已经在 stackoverflow 上看到了很多问题,但还没有找到解决方案。
$sql = "SELECT price FROM list
WHERE price != '".(float)$price."'";
价格为“6.30” 在 DB 中,我想获得除价格 6.30 之外的所有结果。但它完全忽略了它。
我知道这与 float 有关。我无法编辑数据库表,不幸的是,这不是一个选项。
有没有其他方法可以只使用 mysql 来做到这一点?
最佳答案
比较 float 是非常危险的,因为看起来相同的值可能略有不同。一种方法是:
WHERE ABS(price - $price) < 0.001
这样做的问题是它不能使用索引。您可以改为使用:
WHERE price >= $price - 0.001 and price > $price + 0.001
当然,0.001 是任意的容差度量。您可能需要更小或更大的值。
而且,我应该提到十进制
/数字
值可以安全地进行比较。
关于mysql比较忽略的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40594333/