Dezimalstellen problem mit SQLite
Ich habe eine SQLite3-Tabelle mit einer Spalte mit format DECIMAL(7,2), aber wenn ich wählen Sie die Zeilen mit Werten, die nicht mit einem nicht-null-2. Dezimalstelle (zB. 3.00 oder 3.10), das Ergebnis hat immer nachgestellte null(en) fehlt (zB. 3 oder 3.1). Gibt es eine Möglichkeit, dass ich eine Formatierungs-Funktion in die SELECT-Anweisung so, dass ich die erforderlichen 2dp? Ich habe versucht, ROUND(), aber das hat keine Wirkung. Ansonsten muss ich halten, die Umwandlung der resultierenden Werte in der Spalte in die gewünschte format für die Anzeige (mit Python in meinem Fall) jedes mal, wenn ich eine SELECT-Anweisung, die eine echte Schmerzen.
Ich weiß nicht einmal dagegen, wenn der Ergebnis-string anstelle von numerischen, solange Sie die richtige Anzahl von Dezimalstellen.
Jede Hilfe würde geschätzt werden.
Alan
- Wenn du gehst, um eine Funktion schreiben, tun Sie das richtige FORMAT () - Funktion wäre praktisch 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
SQLite intern verwendet IEEE binäre Gleitkomma-Arithmetik, die wirklich nicht geeignet sich gut für die Aufrechterhaltung einer bestimmten Anzahl von Dezimalstellen. Zu bekommen diese Art von dezimal Handhabung erfordern würde man von:
Formatierung der Werte (Konvertierung von Gleitkomma-zu-string) nach der Extraktion ist der einfachste Weg, um Dinge umzusetzen. Könnte man auch ausblenden, dass im inneren eine Art wrapper, so dass Sie den rest des Codes nicht haben, um mit den Folgen umgehen. Aber, wenn Sie gehen zu tun, arithmetische Operationen auf den Wert danach, dann sind Sie besser dran, nicht formatieren und statt der Arbeit mit den Wert von der Abfrage zurückgegeben werden, weil das format und reconvert zurück zu binary floating-point - (die Python verwendet, genau wie die überwiegende Mehrheit der anderen modernen Sprachen) verliert viel information in der reduzierten Genauigkeit.