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

Warum schwimmt MySQL viel mehr als erwartet?

Wenn Sie die Abfrage ausführen:

SELECT * FROM some_table WHERE id = 123

Sie verlassen sich auf die Benutzeroberfläche, um die Gleitkommazahlen zu formatieren. Die von Ihnen verwendete Schnittstelle verwendet zwei statt mehr Zeichen. Schließlich gibt es keine Informationen über die "richtige" Nummer, die angezeigt werden soll.

Sie können die Benutzeroberfläche davon überzeugen, die richtige Zahl anzuzeigen, indem Sie die Zahl als Zeichenfolge oder als Dezimalzahl formatieren. Zum Beispiel:

select format(some_float_field, 3)

wandelt dies in eine Zeichenfolge mit drei Dezimalstellen um. Eine Warnung:Es werden auch Kommas hinzugefügt, die Sie möglicherweise nicht möchten. Das sollte auch funktionieren:

select cast(some_float_field as decimal(8, 3))

Beachten Sie, dass Sie leicht überprüfen können, ob die Daten korrekt sind, indem Sie Folgendes tun:

select *
from some_table
where some_float_field between 1919.987 - 0.0001 and 1919.987 + 0.0001;

Beachten Sie, dass Sie = nicht verwenden möchten auf Fließkommazahlen, aber das verstehst du schon.