MariaDB ha un ROUND()
funzione e un FLOOR()
funzioni che sono simili per certi versi, ma abbastanza differenti per altri.
Di seguito è riportato un rapido riassunto della differenza tra ROUND()
e FLOOR()
in MariaDB.
La differenza
Ecco la differenza tra ciascuna funzione in poche parole:
ROUND()
arrotonda il suo argomento a un numero specificato di cifre decimali.FLOOR()
restituisce il valore intero più grande non maggiore del suo argomento.
Sintassi
Ecco le sintassi e le definizioni di ciascuna funzione.
ROUND()
Il ROUND()
la funzione può essere utilizzata nei due modi seguenti:
ROUND(X)
ROUND(X,D)
ROUND()
arrotonda l'argomento X
a D
decimali. L'algoritmo di arrotondamento dipende dal tipo di dati di X
.
FLOOR()
Il FLOOR()
la funzione può essere utilizzata con una sola sintassi:
FLOOR(X)
FLOOR()
restituisce il valore intero più grande non maggiore di X
.
Esempio della differenza
Ecco un confronto per dimostrare la differenza tra ROUND()
e FLOOR()
:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Risultato:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
In questo caso, il ROUND()
funzione arrotonda il numero per eccesso, perché la cifra successiva (8
) è maggiore di 5
.
Il FLOOR()
funzione d'altra parte, ha semplicemente restituito il valore intero più grande non maggiore dell'argomento (3.6789
).
Secondo argomento
Un'altra differenza è che ROUND()
accetta un secondo argomento opzionale, mentre FLOOR()
no.
Il secondo argomento consente di specificare a quante cifre decimali arrotondare il numero.
Esempio
SELECT
FLOOR(3.6789),
ROUND(3.6789, 2);
Risultato:
+---------------+------------------+ | FLOOR(3.6789) | ROUND(3.6789, 2) | +---------------+------------------+ | 3 | 3.68 | +---------------+------------------+
Esempio dello stesso risultato
Queste funzioni a volte possono restituire lo stesso risultato. Tutto dipende dal valore degli argomenti passati.
Ad esempio, se mettiamo un segno negativo davanti ai valori, otteniamo lo stesso risultato:
SELECT
FLOOR(-3.6789),
ROUND(-3.6789);
Risultato:
+----------------+----------------+ | FLOOR(-3.6789) | ROUND(-3.6789) | +----------------+----------------+ | -4 | -4 | +----------------+----------------+
Questo non vuol dire che un valore negativo restituisca sempre lo stesso risultato, ma non lo fa. Tutto dipende dai valori effettivi forniti e dall'arrotondamento che deve avvenire da ROUND()
.
Ecco un esempio in cui i valori negativi producono risultati diversi:
SELECT
FLOOR(-3.3739),
ROUND(-3.3739);
Risultato:
+----------------+----------------+ | FLOOR(-3.3739) | ROUND(-3.3739) | +----------------+----------------+ | -4 | -3 | +----------------+----------------+
Ed ecco un esempio in cui i valori positivi restituiscono lo stesso risultato:
SELECT
FLOOR(3.3739),
ROUND(3.3739);
Risultato:
+---------------+---------------+ | FLOOR(3.3739) | ROUND(3.3739) | +---------------+---------------+ | 3 | 3 | +---------------+---------------+
Il TRUNCATE()
Funzione
Entrambe le funzioni sono diverse da TRUNCATE()
funzione, che tronca semplicemente il valore a un determinato numero di cifre decimali.