MariaDB a un FLOOR()
fonction et un TRUNCATE()
fonction qui peut retourner les mêmes résultats ou des résultats différents, selon la valeur exacte de leurs arguments.
Vous trouverez ci-dessous un bref aperçu de la différence entre FLOOR()
et TRUNCATE()
dans MariaDB.
La différence
Voici la différence entre chaque fonction en quelques mots :
FLOOR()
renvoie la plus grande valeur entière non supérieure à son argument.TRUNCATE()
tronque son argument à un nombre spécifié de décimales.
Syntaxe
Voici d'abord les syntaxes de chaque fonction.
FLOOR()
La syntaxe de FLOOR()
va comme ceci :
FLOOR(X)
Il renvoie la plus grande valeur entière non supérieure à X
.
TRUNCATE()
La syntaxe de TRUNCATE()
va comme ceci :
TRUNCATE(X,D)
TRUNCATE()
renvoie le nombre X
, tronqué en D
décimales.
Exemple
Voici une comparaison pour démontrer la différence entre FLOOR()
et TRUNCATE()
:
SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0);
Résultat :
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
Dans ce cas, le nombre est une valeur négative et le résultat de chaque fonction est différent.
FLOOR()
a renvoyé le plus grand entier (-4
) valeur non supérieure à son argument.- Le
TRUNCATE()
d'autre part, a simplement tronqué le nombre à la décimale spécifiée.
Même résultat
Les deux fonctions peuvent parfois renvoyer le même résultat. Tout dépend de la valeur des arguments passés.
Si nous changeons les nombres en valeurs positives, les deux fonctions renvoient le même résultat :
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0);
Résultat :
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
Le deuxième argument
Une autre différence évidente entre les deux fonctions est que TRUNCATE()
accepte/nécessite un deuxième argument. Cela peut entraîner un résultat qui contient une partie fractionnaire.
FLOOR()
cependant, ne renvoie qu'un entier, donc aucune partie fractionnaire n'est jamais renvoyée.
Exemple
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2);
Résultat :
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
Le ROUND()
Fonction
Les deux fonctions sont différentes de ROUND()
fonction, qui arrondit son argument à un nombre spécifié de décimales.