In MariaDB, ROUND()
è una funzione numerica incorporata che arrotonda il suo argomento a un determinato numero di cifre decimali.
Sintassi
La funzione può essere utilizzata nei seguenti due modi:
ROUND(X)
ROUND(X,D)
Dove X
è il valore da arrotondare e D
è un argomento facoltativo che specifica il numero di cifre decimali a cui arrotondarlo.
Esempio
Ecco un esempio:
SELECT ROUND(7.5);
Risultato:
+------------+ | ROUND(7.5) | +------------+ | 8 | +------------+
Il passaggio di un valore negativo produce il seguente risultato:
SELECT ROUND(-7.5);
Risultato:
+-------------+ | ROUND(-7.5) | +-------------+ | -8 | +-------------+
Specifica le cifre decimali
Per impostazione predefinita, il ROUND()
La funzione arrotonda il valore a zero cifre decimali. Possiamo specificare il numero di cifre decimali a cui arrotondare il valore passando un secondo argomento.
Esempio:
SELECT ROUND(7.5164, 2);
Risultato:
+------------------+ | ROUND(7.5164, 2) | +------------------+ | 7.52 | +------------------+
Punti decimali negativi
Il secondo argomento può essere un valore negativo, se necessario. Il passaggio di un valore negativo fa sì che le cifre si trovino a sinistra della cifra decimale per diventare zero.
Esempio:
SELECT ROUND(3724.51, -2);
Risultato:
+--------------------+ | ROUND(3724.51, -2) | +--------------------+ | 3700 | +--------------------+
Rispetto a FLOOR()
Il ROUND()
la funzione è diversa da FLOOR()
funzione. Il ROUND()
la funzione arrotonda il numero per eccesso in alcuni casi e per difetto in altri. Il FLOOR()
la funzione, d'altra parte, restituisce sempre il valore intero più grande non maggiore del suo argomento.
Ecco un confronto per dimostrare questa differenza:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Risultato:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
Inoltre, FLOOR()
non accetta un secondo argomento come ROUND()
fa.
ROUND()
è anche diverso da TRUNCATE()
funzione, che tronca semplicemente il numero a una determinata cifra decimale, senza alcun arrotondamento.
Argomenti non numerici
Ecco cosa succede quando forniamo un argomento non numerico:
SELECT ROUND('Ten');
Risultato:
+--------------+ | ROUND('Ten') | +--------------+ | 0 | +--------------+ 1 row in set, 1 warning (0.028 sec)
Controlliamo l'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | +---------+------+-----------------------------------------+
Argomenti mancanti
Chiamando ROUND()
senza un argomento genera un errore:
SELECT ROUND();
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'ROUND'