Ich werde die entgegengesetzte Haltung einnehmen.
FLOAT
Dies gilt für ungefähre Zahlen wie Prozentsätze, Durchschnittswerte usw. Sie sollten die Formatierung durchführen, während Sie die Werte entweder im App-Code oder mithilfe der FORMAT()
Funktion von MySQL anzeigen .
Testen Sie niemals float_value = 1.3
; Es gibt viele Gründe, warum dies fehlschlagen wird.
DECIMAL
sollte für Geldwerte verwendet werden. DECIMAL
vermeidet eine zweite Rundung, wenn ein Wert auf Dollar / Cent / Euro / etc. gerundet werden muss. Buchhalter mögen keine Bruchteile von Cent.
Die Implementierung von MySQL DECIMAL
erlaubt 65 signifikante Stellen. FLOAT
gibt ungefähr 7 und DOUBLE
ungefähr 16. 7 ist normalerweise mehr als genug für Sensoren und wissenschaftliche Berechnungen.
Wie für "Prozentsatz" - Manchmal habe ich verwendet, TINYINT UNSIGNED
wenn ich nur 1 Byte Speicher verbrauchen möchte und nicht viel Präzision benötige; manchmal habe ich verwendet FLOAT
(4 Bytes). Es gibt keinen Datentyp, der speziell auf den Prozentsatz abgestimmt ist. (Beachten Sie auch, dass DECIMAL(2,0)
der Wert nicht gespeichert werden kann 100
, also technisch würden Sie ihn benötigen DECIMAL(3,0)
.)
Oder manchmal habe ich eine verwendet FLOAT
, die einen Wert zwischen 0 und 1 hat. Dann müsste ich jedoch sicherstellen, dass sie mit 100 multipliziert wird, bevor der "Prozentsatz" angezeigt wird.
Mehr
Alle drei von "Prozentsatz, Durchschnitt, Rate" riechen nach Schwimmern, das wäre also meine erste Wahl.
Ein Kriterium für die Entscheidung über den Datentyp ... Wie viele Kopien des Werts werden vorhanden sein?
Wenn Sie eine Milliardenzeilentabelle mit einer Spalte für einen Prozentsatz haben, sollten Sie berücksichtigen, dass TINYINT
dies 1 Byte (insgesamt 1 GB), aber FLOAT
4 Byte (insgesamt 4 GB) dauern würde. OTOH, die meisten Anwendungen haben nicht so viele Zeilen, daher ist dies möglicherweise nicht relevant.
In der Regel sollten "exakte" Werte eine Form von INT
oder verwenden DECIMAL
. Ungenaue Dinge (wissenschaftliche Berechnungen, Quadratwurzeln, Division usw.) sollten verwendet werden FLOAT
(oder DOUBLE
).
Darüber hinaus sollte die Formatierung der Ausgabe normalerweise dem Frontend der Anwendung überlassen bleiben. Das heißt, obwohl ein "Durchschnitt" zu "14.6666666 ..." berechnen kann, sollte die Anzeige so etwas wie "14.7" anzeigen; Das ist freundlicher für den Menschen. In der Zwischenzeit haben Sie den zugrunde liegenden Wert, um später zu entscheiden, dass "15" oder "14.667" die bevorzugte Ausgabeformatierung ist.
Der Bereich "0,00 - 100,00" kann entweder mit FLOAT
und unter Verwendung der Ausgabeformatierung oder mit DECIMAL(5,2)
(3 Bytes) mit der Voreinstellung festgelegt werden, dass Sie immer die angegebene Genauigkeit wünschen .