为什么在mysql中减去两个相等的值不等于零?
两种字段类型都是双倍的。见下图
答案 0 :(得分:3)
这被称为近似精度。这不是错误,floating point数据类型旨在以这种方式工作。它们无法精确存储数据。因此,如果这很重要,您应该使用定点数据类型,例如MySQL中的DECIMAL
。
另一方面,您始终可以使用精确增量来进行浮点比较,例如:
SELECT
`foo`,
`bar`,
IF(ABS(`foo`-`bar`)<1E-13, 0, `foo`-`bar`) AS zero_compared
FROM
t
如您所见,此处delta为1E-13
(通常,这就足够了)
答案 1 :(得分:1)
此问题是由浮点精度和计算引起的。 您也可以参考此问题以明确您的问题: