Der Unterschied zwischen dem Dezimaltyp und dem Float Double in MySQL (ausführliche Erklärung)

Der Unterschied zwischen dem Dezimaltyp und dem Float Double in MySQL (ausführliche Erklärung)

MySQL verfügt über nicht standardmäßige Datentypen wie Float und Double sowie über standardmäßige Datentypen wie Decimal.

Der Unterschied besteht darin, dass nicht standardmäßige Typen wie Float und Double ungefähre Werte in der Datenbank speichern, während Decimal numerische Werte in Form von Zeichenfolgen speichert.
Float- und Double-Typen können Gleitkommazahlen speichern (also Dezimaltypen), aber Float hat einen Nachteil. Wenn die von Ihnen angegebenen Daten eine Ganzzahl sind, werden sie als Ganzzahl behandelt. Auf diese Weise stoßen wir natürlich auf Probleme beim Speichern und Zugreifen auf Währungswerte. Mein Standardwert ist: 0,00, aber der tatsächliche Speicherwert ist 0. Wenn ich Währungswerte als 12,00 einzahle und darauf zugreife, beträgt der tatsächliche Speicherwert 12.

Glücklicherweise bietet MySQL zwei Datentypen: Dezimal, wodurch das obige Problem leicht gelöst werden kann: Der Dezimaltyp wird von MySQL im gleichen Typ implementiert, der im SQL92-Standard zulässig ist. Sie werden zum Speichern von Werten verwendet, bei denen es auf genaue Genauigkeit ankommt, wie zum Beispiel bei Daten im Zusammenhang mit Geld.

Datendefinition

float(M,S) M ist die Gesamtlänge und S die Länge nach dem Dezimalpunkt. Im Internet gibt es viele ungenaue Beispiele. Kopieren Sie sie wie folgt:

mysql> Tabelle erstellen t1(c1 float(10,2), c3 decimal(10,2));

Abfrage OK, 0 Zeilen betroffen (0,02 Sek.)

mysql> in t1-Werte einfügen (9876543.21, 9876543.12);

Abfrage OK, 1 Zeile betroffen (0,00 Sek.)

mysql> wähle * aus t1;

+----------------+-----------------+

| c1 | c3 |

+----------------+-----------------+

| 9876543.00 | 9876543.12 |

+----------------+------------------+

2 Zeilen im Satz (0,00 Sek.)

Ein weiteres Beispiel: DECIMAL(5,2)

mysql> Tabelle erstellen t1(id1 float(5,2) Standard null,id2 double(5,2) Standard null,
id3 dezimal(5,2) Standard null );

mysql> in t1-Werte einfügen (1,2345,1,2345,1,2345);
Abfrage OK, 1 Zeile betroffen, 1 Warnung (0,04 Sek.)

mysql> Warnungen anzeigen;
+-------+------+------------------------------------------+
| Ebene | Code | Nachricht |
+-------+------+------------------------------------------+
| Hinweis | 1265 | Daten für Spalte „id3“ in Zeile 1 abgeschnitten |
+-------+------+------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

1,2345 --- Es gibt höchstens 2 Dezimalstellen, daher kann es gespeichert werden und die Daten werden automatisch gerundet, aber ein Rückgang wird gemeldet

12.34 --- OK

1234,5 --- Da der Dezimalteil weniger als 2 Ziffern umfasst, muss er mit 0 aufgefüllt werden. Er sollte daher als 1234,50 gespeichert werden. Dadurch wird die Gesamtzahl der Ziffern 5 überschritten und beim Speichern ein Fehler gemeldet.

1.2 --- Füllen Sie den Dezimalteil mit 0. Sparen Sie nach 1.20.

Vergleich des Standardstatus

Wenn bei Gleitkommazahlen Längengrad und Maßstab nicht angegeben werden, werden sie entsprechend dem tatsächlichen Genauigkeitswert gespeichert. Wenn Genauigkeit und Maßstab angegeben werden, wird das gerundete Ergebnis automatisch eingefügt und das System meldet keinen Fehler. Wenn Genauigkeit und Maßstab bei Festkommazahlen nicht angegeben werden, wird der Standardwert decimal(10,0) verwendet. Wenn die Daten den Genauigkeits- und Maßstabswert überschreiten, meldet das System einen Fehler.

Der obige Artikel über den Unterschied zwischen dem Dezimaltyp und dem Float Double in MySQL (ausführliche Erklärung) ist der gesamte Inhalt, den der Herausgeber mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Eine kurze Einführung in die Verwendung des Dezimaltyps in MySQL
  • Detaillierte Erklärung der Bedeutung von N und M im MySQL-Datentyp DECIMAL(N,M)
  • Methode zum Konvertieren einer numerischen Zeichenfolge in wissenschaftlicher Notation in den Dezimaltyp
  • Datenbankdatentyp Float zum C#-Typ Dezimal, Konvertierung des Float-Datentyps ist ungültig
  • Detaillierte Erklärung der Verwendung von DECIMAL im MySQL-Datentyp
  • Implementierung der MySQL-Dezimaldatentypkonvertierung
  • Detaillierte Erläuterung des Dezimal-Padding-Problems des Dezimal-Datentyps in MySQL
  • Detaillierte Erklärung zur Verwendung des MySQL-Datentyps DECIMAL
  • Ausführliche Erläuterung der Verwendung und Implementierung des Decimal-Typs in der Datenbank

<<:  So mounten Sie eine Datenfestplatte auf Tencent Cloud Server Centos

>>:  Detaillierte Erläuterung der Konfiguration und Serialisierung von Nest.js-Umgebungsvariablen

Artikel empfehlen

Implementierung der Docker-Compose-Bereitstellung des ZK+Kafka+Storm-Clusters

Übersicht über die Clusterbereitstellung 172.22.1...

So installieren Sie RabbitMQ schnell in Docker

1. Holen Sie sich das Bild #Geben Sie die Version...

Lösen Sie das domänenübergreifende Problem von Vue + SpringBoot + Shiro

Inhaltsverzeichnis 1. Konfigurieren Sie das Vue-F...

Lösung zum Einfügen eines Formulars mit einer Leerzeile oben und unten

Ich weiß nicht, ob Ihnen beim Erstellen einer Webs...

Zusammenfassung häufig verwendeter Escape-Zeichen in HTML

Die in HTML häufig verwendeten Escape-Zeichen wer...

So verwenden Sie CURRENT_TIMESTAMP in MySQL

Inhaltsverzeichnis Verwendung von CURRENT_TIMESTA...

Unicode-Signatur-BOM-Problem (Byte Order Mark) für UTF-8-Dateien

Beim Debuggen einer chinesischen Zen Cart-Website...

Tomcat Server Erste Schritte Super ausführliches Tutorial

Inhaltsverzeichnis 1. Einige Konzepte von Tomcat ...

Details zu Linux-Dateideskriptoren, Dateizeigern und Inodes

Inhaltsverzeichnis Linux - Dateideskriptor, Datei...

Lösen Sie schnell das Problem des langsamen Tomcat-Starts, super einfach

Heute habe ich einem Klassenkameraden geholfen, e...

Umfassendes Verständnis des html.css-Überlaufs

Umfassendes Verständnis des html.css-Überlaufs XM...

Grundlegende Verwendung der JS-Datumssteuerung My97DatePicker

My97DatePicker ist ein sehr flexibles und benutze...

Drei Möglichkeiten zum Teilen der Komponentenlogik in React

Ohne weitere Umschweife sind dies diese drei Meth...