MySQL Gleitkomma Vergleichsprobleme
Ich lief in ein Problem durch die Einführung von floating-point-Spalten in der MySQL-Datenbank-schema, dass die Vergleiche auf floating-point-Werte nicht die richtigen Ergebnisse zurück, immer.
1 - 50.12
2 - 34.57
3 - 12.75
4 - ...(rest weniger als 12.00 Uhr)
SELECT COUNT(*) FROM `users` WHERE `points` > "12.75"
Dieser liefert mir "3".
Habe ich gelesen, dass die Vergleiche von floating-point-Werte in MySQL ist eine schlechte Idee und Typ "decimal" ist die bessere option.
Habe ich keine Hoffnung, es geht voran mit dem Typ float und Holen Sie sich die Vergleiche, um korrekt zu arbeiten?
InformationsquelleAutor der Frage Sharief Shaik | 2010-04-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bemerken Sie das problem unten?
Gibt es ein extra
0.00000005722
spread zwischen den Zeilen. Daher sind einige der Werte, die false zurück, wenn verglichen mit dem Wert, den Sie initialisiert wurden.Um keine Probleme mit der floating-point Arithmetik und Vergleiche, sollten Sie die
DECIMAL
Daten Typ:InformationsquelleAutor der Antwort Daniel Vassallo
Habe ich Gesicht das ähnliche Problem einmal. Konvertieren Sie die 'float' Feld 'decimal'. Es werde auf jeden Fall das problem lösen.
InformationsquelleAutor der Antwort intellidiot
Es ist eine floating-point -, was ist also das problem? 3 könnte sein das korrekte Ergebnis, hängt davon ab, was die Datenbank denkt 12.75. Ist es 12.75 oder einfach nur ein wenig mehr?
DECIMAL wenn Sie wollen genaue zahlen.
InformationsquelleAutor der Antwort Frank Heikens
Gibt es ein Probleme mit Vergleich von Schwimmern für die Gleichstellung. Dies kann zu unvorhergesehenen Ergebnissen. Dies ist aufgrund der internen Umsetzung von floating-point-Arithmetik.
InformationsquelleAutor der Antwort Andrey
Ich dies
aber ich Stimme zu, jede Sprache vergleichen können, float Gleichheit und, wenn die gespeicherten Werte gleich genauen zahlen, Werten Sie Sie eingefügt haben, sollte es keine Problem
nur mit ein paar Nachkommastellen und exakte Abstimmung auf die Werte, Präzision Fehler, die nicht klingt wie ein offensichtlicher Grund für solche Unterschiede in der MySQL -
InformationsquelleAutor der Antwort ninja
Vergleich einer Zahl mit einem string?
InformationsquelleAutor der Antwort dkretz