Mysql
 sql >> Base de données >  >> RDS >> Mysql

La soustraction de deux valeurs égales n'est pas nulle dans mysql

C'est ce qu'on appelle une précision approximative . Ce n'est pas une erreur, virgule flottante les types de données sont destinés à fonctionner de cette manière. Ils ne peuvent pas stocker les données avec précision. Donc, si cela compte, vous devez utiliser des types de données à virgule fixe, tels que DECIMAL dans MySQL.

D'un autre côté, vous pouvez toujours utiliser le delta de précision pour les comparaisons en virgule flottante, comme :

SELECT 
  `foo`,
  `bar`,
  IF(ABS(`foo`-`bar`)<1E-13, 0, `foo`-`bar`) AS zero_compared
FROM
 t

comme vous pouvez le voir, ici delta est 1E-13 (normalement, ça suffira)