I MariaDB, ROUND()
er en indbygget numerisk funktion, der afrunder sit argument til et givet antal decimaler.
Syntaks
Funktionen kan bruges på følgende to måder:
ROUND(X)
ROUND(X,D)
Hvor X
er værdien, der skal afrundes, og D
er et valgfrit argument, der angiver antallet af decimaler, der skal afrundes til.
Eksempel
Her er et eksempel:
SELECT ROUND(7.5);
Resultat:
+------------+ | ROUND(7.5) | +------------+ | 8 | +------------+
Hvis du sender en negativ værdi, får du følgende resultat:
SELECT ROUND(-7.5);
Resultat:
+-------------+ | ROUND(-7.5) | +-------------+ | -8 | +-------------+
Angiv decimaler
Som standard er ROUND()
funktion afrunder værdien til nul decimaler. Vi kan angive antallet af decimaler, som værdien skal afrundes til ved at sende et andet argument.
Eksempel:
SELECT ROUND(7.5164, 2);
Resultat:
+------------------+ | ROUND(7.5164, 2) | +------------------+ | 7.52 | +------------------+
Negative decimaler
Det andet argument kan være en negativ værdi, hvis det kræves. Hvis du sender en negativ værdi, bliver cifre til venstre af decimalen for at blive nul.
Eksempel:
SELECT ROUND(3724.51, -2);
Resultat:
+--------------------+ | ROUND(3724.51, -2) | +--------------------+ | 3700 | +--------------------+
Sammenlignet med FLOOR()
ROUND()
funktionen er forskellig fra FLOOR()
fungere. ROUND()
funktion runder tallet op i nogle tilfælde og ned i andre. FLOOR()
funktion returnerer på den anden side altid den største heltalværdi, der ikke er større end dens argument.
Her er en sammenligning for at demonstrere denne forskel:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Resultat:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
Også FLOOR()
accepterer ikke et andet argument som ROUND()
gør.
ROUND()
er også forskellig fra TRUNCATE()
funktion, som blot afkorter tallet til en given decimal, uden nogen afrunding.
Ikke-numeriske argumenter
Her er, hvad der sker, når vi giver et ikke-numerisk argument:
SELECT ROUND('Ten');
Resultat:
+--------------+ | ROUND('Ten') | +--------------+ | 0 | +--------------+ 1 row in set, 1 warning (0.028 sec)
Lad os tjekke advarslen:
SHOW WARNINGS;
Resultat:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | +---------+------+-----------------------------------------+
Manglende argumenter
Kalder ROUND()
uden et argument resulterer i en fejl:
SELECT ROUND();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'ROUND'