MariaDB
 sql >> Database >  >> RDS >> MariaDB

MariaDB ROUND() vs FLOOR()

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.