1

Ich sende Daten hin und her Python und Cassandra. Ich verwende beide eingebauten float Typen in meinem Python-Programm und den Datentyp für meine Cassandra-Tabelle. Wenn ich eine Nummer 955.99 von Python an Cassandra sende, wird in der Datenbank 955.989999 angezeigt. Wenn ich eine Abfrage in Python sende, um den Wert zurückzugeben, den ich gerade gesendet habe, ist es jetzt 955.989990234375.Python Cassandra Floating Precision Verlust

Ich verstehe das Problem mit Präzisionsverlust in Python, ich wollte nur wissen, ob es in Cassandra eingebaute Mechanismen gibt, die dieses Problem verhindern könnten.

Antwort

4

Python float ist eine 64-Bit-IEEE-754 doppelte Präzision binäre Gleitkommazahl. Verwenden Sie double in Cassandra für einen übereinstimmenden Typ.

+0

Während dies für einige der Werte funktioniert, werden einige wie '8.83' in' null' umgewandelt, obwohl sie die gleichen Typen wie die anderen Werte haben, irgendeine Idee, warum das passiert? – user2361174

+0

Ahh, es waren nicht die Werte selbst, die ein Problem waren. Ich benutzte 'DROP', um die Float-Spalten zu entfernen, und benutzte' ADD', um sie zurückzustellen. Die Spalten, die ich nicht in etwas anderes benannt habe, hatten die Nullwerte in ihnen. – user2361174

+0

Beachten Sie, dass Fließkommawerte wie Float oder Double immer Probleme mit der Genauigkeit haben. – Mandraenke