sql >> Databáze >  >> RDS >> Mysql

Odečtení dvou stejných hodnot není v mysql nula

To je známé jako přibližná přesnost . Toto není chyba, plovoucí desetinná čárka datové typy mají fungovat tímto způsobem. Nemohou ukládat data přesně. Pokud na tom záleží, měli byste použít datové typy s pevným bodem, jako je DECIMAL v MySQL.

Na druhou stranu můžete vždy použít deltu přesnosti pro srovnání s plovoucí desetinnou čárkou, například:

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

jak můžete vidět, zde delta je 1E-13 (normálně to bude stačit)



  1. Jak odstranit koncové mezery v SQL Server – RTRIM()

  2. Jak vypočítat dny mezi dvěma daty v PHP?

  3. PDO::bindParam ve smyčce foreach, všechny hodnoty jsou nastaveny jako stejné?

  4. vložte datum do databáze mysql