Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Subtração de dois valores iguais não é zero no mysql


Isso é conhecido como uma precisão aproximada . Isso não é um erro, ponto flutuante tipos de dados se destinam a funcionar dessa maneira. Eles não podem armazenar dados com precisão. Portanto, se isso importa, você deve usar tipos de dados de ponto fixo, como DECIMAL em MySQL.

Por outro lado, você sempre pode usar delta de precisão para comparações de ponto flutuante, como:
SELECT 
  `foo`,
  `bar`,
  IF(ABS(`foo`-`bar`)<1E-13, 0, `foo`-`bar`) AS zero_compared
FROM
 t

como você pode ver, aqui o delta é 1E-13 (normalmente, isso será suficiente)