Ich speichere Prozesszeit in einer MySQL-Datenbank als float (4,4).
%Vor%$ process_time wird immer korrekt angezeigt, wenn es an die Befehlszeile ausgegeben wird, aber wenn sein Wert größer als 1 ist, wird es in mysql als .9999 gespeichert.
Was gibt's?
float (4,4) bedeutet insgesamt 4 Ziffern, 4 davon sind nach dem Komma. Sie müssen zum Beispiel auf 10,4 wechseln
MySQL erlaubt eine nicht standardisierte Syntax: FLOAT (M, D) oder REAL (M, D) oder DOUBLE PRECISION (M, D). Hier bedeutet "(M, D)", dass Werte mit insgesamt bis zu M Ziffern gespeichert werden können, von denen D nach dem Komma liegen darf.
Auf der Seite MySQL Numerische Typen :
MySQL erlaubt eine nicht standardisierte Syntax: FLOAT (M, D) oder REAL (M, D) oder DOUBLE PRÄZISION (M, D). Hier bedeutet "(M, D)", dass Werte mit up gespeichert werden können zu M Ziffern insgesamt, von denen D Ziffern nach der Dezimalstelle sein können Punkt. Zum Beispiel wird eine als FLOAT (7,4) definierte Spalte aussehen -999.9999 wenn angezeigt. MySQL führt beim Speichern von Werten eine Rundung durch. Wenn Sie also 999.00009 in eine FLOAT (7,4) -Spalte einfügen, wird die ungefähre Zahl angezeigt Ergebnis ist 999.0001.
float (4,4) bedeutet eine 4-stellige Zahl mit allen 4 Ziffern rechts vom Dezimalpunkt; 0.9999 ist die größte Zahl, die es halten kann.
Das liegt an den Werten, die Sie übergeben. Sie lassen 4 Nachkommastellen zu, aber insgesamt nur 4 Stellen, so dass das Maximum, das gespeichert werden kann, 0,9999 ist. Ändern Sie es in float(5,4)
, um es korrekt zu speichern, oder erhöhen Sie die 5, wenn Sie der Meinung sind, dass Sie eine noch größere Zahl benötigen.
Dies ist nicht direkt eine Antwort auf Ihre Frage, aber Sie sollten keine Floats dafür verwenden. Rundungsfragen sind bekannt für Floats . Verwenden Sie decimal
, wenn Sie Präzision wünschen.