Beim Einchecken der neuen Datenbankstruktur habe ich festgestellt, dass jemand ein Feld von float in double geändert hat. Ich fragte mich warum, überprüfte die MySQL-Dokumentation, verstand aber ehrlich gesagt nicht, was der Unterschied ist.
Kann jemand erklären?
Antworten:
Sie repräsentieren beide Gleitkommazahlen. A
FLOAT
steht für einfache Genauigkeit, während aDOUBLE
für Zahlen mit doppelter Genauigkeit steht.MySQL verwendet vier Bytes für Werte mit einfacher Genauigkeit und acht Bytes für Werte mit doppelter Genauigkeit.
Es gibt einen großen Unterschied zwischen Gleitkommazahlen und Dezimalzahlen, die Sie mit dem
DECIMAL
Datentyp verwenden können. Dies wird verwendet, um genaue numerische Datenwerte zu speichern, im Gegensatz zu Gleitkommazahlen, bei denen es wichtig ist, die genaue Genauigkeit beizubehalten, beispielsweise bei Gelddaten.quelle
Vielleicht könnte dieses Beispiel erklären.
Wir haben einen Tisch wie diesen:
Für den ersten Unterschied versuchen wir , in jedes Feld einen Datensatz mit '1.2' einzufügen :
Die Tabelle sieht folgendermaßen aus:
Sieh den Unterschied?
Wir versuchen zum nächsten Beispiel:
Hallo! Wir können den Unterschied so finden:
quelle
float(10, 2)
Doppel sind wie Schwimmer, nur dass sie doppelt so groß sind. Dies ermöglicht eine größere Genauigkeit.
quelle
Dachte , ich würde mein eigenes Beispiel hinzufügen , die mir geholfen , den Unterschied mit dem Wert sehen
1.3
beim Hinzufügen oder mit einem anderen multipliziertfloat
,decimal
unddouble
.1.3
float Hinzugefügt1.3
von verschiedenen Typen:1.3
float MULTIPLIED von1.3
verschiedenen Typen:Dies verwendet MySQL 6.7
Abfrage:
Tabelle erstellen und Daten einfügen:
quelle
FLOAT speichert Gleitkommazahlen mit einer Genauigkeit von bis zu acht Stellen und hat vier Bytes, während DOUBLE Gleitkommazahlen mit einer Genauigkeit von bis zu 18 Stellen und acht Bytes speichert.
quelle
Float hat 32 Bit (4 Bytes) mit einer Genauigkeit von 8 Stellen. Doppelt hat 64 Bit (8 Bytes) mit einer Genauigkeit von 16 Stellen.
Wenn Sie eine bessere Genauigkeit benötigen, verwenden Sie Double anstelle von Float .
quelle