MariaDB heeft een ROUND()
functie en een FLOOR()
functies die in sommige opzichten vergelijkbaar zijn, maar op andere manieren behoorlijk verschillen.
Hieronder volgt een kort overzicht van het verschil tussen ROUND()
en FLOOR()
in MariaDB.
Het verschil
Hier is het verschil tussen elke functie in een notendop:
ROUND()
rondt zijn argument af op een gespecificeerd aantal decimalen.FLOOR()
geeft de grootste gehele waarde terug die niet groter is dan zijn argument.
Syntaxis
Hier zijn de syntaxis en definities van elke functie.
ROUND()
De ROUND()
functie kan op de volgende twee manieren worden gebruikt:
ROUND(X)
ROUND(X,D)
ROUND()
rondt het argument X
af naar D
decimalen. Het afrondingsalgoritme is afhankelijk van het gegevenstype van X
.
FLOOR()
De FLOOR()
functie kan met slechts één syntaxis worden gebruikt:
FLOOR(X)
FLOOR()
geeft de grootste gehele waarde terug die niet groter is dan X
.
Voorbeeld van het verschil
Hier is een vergelijking om het verschil aan te tonen tussen ROUND()
en FLOOR()
:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Resultaat:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
In dit geval is de ROUND()
functie rondt het getal naar boven af, omdat het volgende cijfer (8
) is groter dan 5
.
De FLOOR()
functie aan de andere kant, retourneerde eenvoudigweg de grootste gehele waarde die niet groter is dan het argument (3.6789
).
Tweede argument
Een ander verschil is dat ROUND()
accepteert een optioneel tweede argument, terwijl FLOOR()
niet.
Met het tweede argument kunt u specificeren op hoeveel decimalen het getal moet worden afgerond.
Voorbeeld
SELECT
FLOOR(3.6789),
ROUND(3.6789, 2);
Resultaat:
+---------------+------------------+ | FLOOR(3.6789) | ROUND(3.6789, 2) | +---------------+------------------+ | 3 | 3.68 | +---------------+------------------+
Voorbeeld van hetzelfde resultaat
Deze functies kunnen soms hetzelfde resultaat opleveren. Het hangt allemaal af van de waarde van de argumenten die worden doorgegeven.
Als we bijvoorbeeld een minteken voor de waarden plaatsen, krijgen we hetzelfde resultaat:
SELECT
FLOOR(-3.6789),
ROUND(-3.6789);
Resultaat:
+----------------+----------------+ | FLOOR(-3.6789) | ROUND(-3.6789) | +----------------+----------------+ | -4 | -4 | +----------------+----------------+
Dat wil niet zeggen dat een negatieve waarde altijd hetzelfde resultaat oplevert - dat doet het niet. Het hangt allemaal af van de werkelijke waarden die worden verstrekt en de afronding die moet plaatsvinden door ROUND()
.
Hier is een voorbeeld waarbij negatieve waarden verschillende resultaten opleveren:
SELECT
FLOOR(-3.3739),
ROUND(-3.3739);
Resultaat:
+----------------+----------------+ | FLOOR(-3.3739) | ROUND(-3.3739) | +----------------+----------------+ | -4 | -3 | +----------------+----------------+
En hier is een voorbeeld waarbij positieve waarden hetzelfde resultaat opleveren:
SELECT
FLOOR(3.3739),
ROUND(3.3739);
Resultaat:
+---------------+---------------+ | FLOOR(3.3739) | ROUND(3.3739) | +---------------+---------------+ | 3 | 3 | +---------------+---------------+
De TRUNCATE()
Functie
Beide functies zijn anders dan de TRUNCATE()
functie, die de waarde eenvoudig afkapt tot een bepaald aantal decimalen.