MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

MariaDB ROUND() gegen FLOOR()

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.