MariaDB ha un FLOOR()
funzione e un TRUNCATE()
funzione che può restituire gli stessi risultati o risultati diversi, a seconda del valore esatto dei loro argomenti.
Di seguito è riportato un rapido riassunto della differenza tra FLOOR()
e TRUNCATE()
in MariaDB.
La differenza
Ecco la differenza tra ciascuna funzione in poche parole:
FLOOR()
restituisce il valore intero più grande non maggiore del suo argomento.TRUNCATE()
tronca il suo argomento a un numero specificato di cifre decimali.
Sintassi
Innanzitutto, ecco le sintassi di ciascuna funzione.
FLOOR()
La sintassi per FLOOR()
va così:
FLOOR(X)
Restituisce il valore intero più grande non maggiore di X
.
TRUNCATE()
La sintassi per TRUNCATE()
va così:
TRUNCATE(X,D)
TRUNCATE()
restituisce il numero X
, troncato in D
cifre decimali.
Esempio
Ecco un confronto per dimostrare la differenza tra FLOOR()
e TRUNCATE()
:
SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0);
Risultato:
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
In questo caso, il numero è un valore negativo e il risultato di ciascuna funzione è diverso.
FLOOR()
ha restituito il numero intero più grande (-4
) valore non maggiore del suo argomento.- Il
TRUNCATE()
funzione d'altra parte, ha semplicemente troncato il numero alla cifra decimale specificata.
Stesso risultato
Entrambe le funzioni possono talvolta restituire lo stesso risultato. Tutto dipende dal valore degli argomenti passati.
Se cambiamo i numeri in valori positivi, entrambe le funzioni restituiscono lo stesso risultato:
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0);
Risultato:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
Il secondo argomento
Un'altra ovvia differenza tra le due funzioni è che TRUNCATE()
accetta/richiede un secondo argomento. Ciò può comportare un risultato che contiene una parte frazionaria.
FLOOR()
tuttavia, restituisce solo un numero intero, quindi non viene mai restituita alcuna parte frazionaria.
Esempio
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2);
Risultato:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
Il ROUND()
Funzione
Entrambe le funzioni sono diverse da ROUND()
funzione, che arrotonda il suo argomento a un numero specificato di cifre decimali.