sql >> Database >  >> RDS >> Mysql

Aftrekken van twee gelijke waarden is niet nul in mysql

Dat staat bekend als een geschatte precisie . Dit is geen fout, drijvend punt datatypes zijn bedoeld om op die manier te werken. Ze kunnen gegevens niet precies opslaan. Dus als dat van belang is, moet u datatypes met een vast punt gebruiken, zoals DECIMAL in MySQL.

Aan de andere kant kun je altijd precisiedelta gebruiken voor vergelijkingen voor drijvende komma, zoals:

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

zoals je kunt zien, is hier delta 1E-13 (normaal gesproken is dat voldoende)



  1. Hoe converteer je alle tabellen in de database naar één sortering?

  2. draaitabellen/tabellen ongedaan maken mysql

  3. Waarom externe sleutels gebruiken zonder actie op verwijderen of bijwerken?

  4. mysql2sqlite.sh Auto_Increment