Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die Subtraktion zweier gleicher Werte ist in MySQL nicht Null

Dies wird als ungefähre Präzision bezeichnet . Dies ist kein Fehler, Fließkomma Datentypen sollen so funktionieren. Sie können Daten nicht genau speichern. Wenn das also wichtig ist, sollten Sie Festkomma-Datentypen verwenden, wie z. types.html">DECIMAL bei MySQL.

Andererseits können Sie für Gleitkommavergleiche immer das Präzisionsdelta verwenden, wie:

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

Wie Sie sehen, ist Delta hier 1E-13 (normalerweise reicht das aus)