Dieser Abschnitt beschreibt das Rundungsverhalten in
Präzisionsberechnungen für die Funktion
ROUND()
und Einfügungen in
DECIMAL
-Spalten.
Die Funktion ROUND()
rundet genaue und
näherungsweise Argumente unterschiedlich:
Genaue Zahlen rundet ROUND()
nach dem
Grundsatz „Ab der Hälfte wird aufgerundet“.
Dabei wird eine positive Zahl mit einem Dezimalteil von .5
oder mehr auf den nächsten Integer aufgerundet und eine
negative Zahl mit einem Dezimalteil von .5 oder mehr auf den
nächsten Integer abgerundet. (Mit anderen Worten: Die Zahl
wird von null weggerundet.) Ein Wert mit einem Dezimalteil
kleiner .5 wird dagegen auf den nächsten Integer abgerundet,
wenn er positiv ist, und auf den nächsten Integer
aufgerundet, wenn er negativ ist.
Das Ergebnis für Näherungswerte hängt von der C-Bibliothek
ab. Auf vielen Systemen bedeutet dies, dass
ROUND()
nach der Regel „Runde auf die
nächste gerade Zahl“ vorgeht: Ein Wert mit
Bruchteilsanteil wird auf den nächsten geraden Integer
gerundet.
Das folgende Beispiel verdeutlicht die Unterschiede einer Rundung von genauen und näherungsweisen Werten:
mysql> SELECT ROUND(2.5), ROUND(25E-1);
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) |
+------------+--------------+
| 3 | 2 |
+------------+--------------+
Da Einfügungen in eine DECIMAL
-Spalte einen
genauen Datentyp zum Ziel haben, wird immer nach der Regel
„Runde auf die nächste gerade Zahl“ gerundet, egal
ob der einzufügende Wert ein genauer oder ein Näherungswert ist:
mysql>CREATE TABLE t (d DECIMAL(10,0));
Query OK, 0 rows affected (0.00 sec) mysql>INSERT INTO t VALUES(2.5),(2.5E0);
Query OK, 2 rows affected, 2 warnings (0.00 sec) Records: 2 Duplicates: 0 Warnings: 2 mysql>SELECT d FROM t;
+------+ | d | +------+ | 3 | | 3 | +------+
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.