MariaDB hat ein ROUND()
Funktion und ein FLOOR()
Funktionen, die in gewisser Weise ähnlich, aber in anderer Hinsicht sehr unterschiedlich sind.
Unten ist ein kurzer Überblick über den Unterschied zwischen ROUND()
und FLOOR()
in MariaDB.
Der Unterschied
Hier ist der Unterschied zwischen den einzelnen Funktionen auf den Punkt gebracht:
ROUND()
rundet sein Argument auf eine angegebene Anzahl von Dezimalstellen.FLOOR()
gibt den größten ganzzahligen Wert zurück, der nicht größer als sein Argument ist.
Syntax
Hier sind die Syntaxen und Definitionen jeder Funktion.
ROUND()
Das ROUND()
Die Funktion kann auf zwei Arten verwendet werden:
ROUND(X)
ROUND(X,D)
ROUND()
rundet das Argument X
bis D
Nachkommastellen. Der Rundungsalgorithmus hängt vom Datentyp von X
ab .
FLOOR()
Der FLOOR()
Funktion kann mit nur einer Syntax verwendet werden:
FLOOR(X)
FLOOR()
gibt den größten ganzzahligen Wert zurück, der nicht größer als X
ist .
Beispiel für den Unterschied
Hier ist ein Vergleich, um den Unterschied zwischen ROUND()
zu demonstrieren und FLOOR()
:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Ergebnis:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
In diesem Fall das ROUND()
Die Funktion hat die Zahl aufgerundet, da die nächste Ziffer (8
) ist größer als 5
.
Der FLOOR()
Funktion hingegen gab einfach den größten ganzzahligen Wert zurück, der nicht größer als das Argument (3.6789
).
Zweites Argument
Ein weiterer Unterschied besteht darin, dass ROUND()
akzeptiert ein optionales zweites Argument, wohingegen FLOOR()
nicht.
Mit dem zweiten Argument können Sie angeben, auf wie viele Dezimalstellen die Zahl gerundet werden soll.
Beispiel
SELECT
FLOOR(3.6789),
ROUND(3.6789, 2);
Ergebnis:
+---------------+------------------+ | FLOOR(3.6789) | ROUND(3.6789, 2) | +---------------+------------------+ | 3 | 3.68 | +---------------+------------------+
Beispiel für dasselbe Ergebnis
Diese Funktionen können manchmal dasselbe Ergebnis zurückgeben. Es hängt alles vom Wert der übergebenen Argumente ab.
Setzen wir beispielsweise ein Minuszeichen vor die Werte, erhalten wir das gleiche Ergebnis:
SELECT
FLOOR(-3.6789),
ROUND(-3.6789);
Ergebnis:
+----------------+----------------+ | FLOOR(-3.6789) | ROUND(-3.6789) | +----------------+----------------+ | -4 | -4 | +----------------+----------------+
Das soll nicht heißen, dass ein negativer Wert immer dasselbe Ergebnis liefert – das ist nicht der Fall. Es hängt alles von den tatsächlich bereitgestellten Werten und der Rundung ab, die durch ROUND()
stattfinden soll .
Hier ist ein Beispiel, bei dem negative Werte zu unterschiedlichen Ergebnissen führen:
SELECT
FLOOR(-3.3739),
ROUND(-3.3739);
Ergebnis:
+----------------+----------------+ | FLOOR(-3.3739) | ROUND(-3.3739) | +----------------+----------------+ | -4 | -3 | +----------------+----------------+
Und hier ist ein Beispiel, bei dem positive Werte dasselbe Ergebnis zurückgeben:
SELECT
FLOOR(3.3739),
ROUND(3.3739);
Ergebnis:
+---------------+---------------+ | FLOOR(3.3739) | ROUND(3.3739) | +---------------+---------------+ | 3 | 3 | +---------------+---------------+
Das TRUNCATE()
Funktion
Beide Funktionen unterscheiden sich von TRUNCATE()
Funktion, die den Wert einfach auf eine bestimmte Anzahl von Dezimalstellen kürzt.