MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

MariaDB ROUND() contre FLOOR()

MariaDB a un ROUND() fonction et un FLOOR() fonction qui sont similaires à certains égards, mais assez différentes à d'autres égards.

Vous trouverez ci-dessous un bref aperçu de la différence entre ROUND() et FLOOR() dans MariaDB.

La différence

Voici la différence entre chaque fonction en quelques mots :

  • ROUND() arrondit son argument à un nombre spécifié de décimales.
  • FLOOR() renvoie la plus grande valeur entière non supérieure à son argument.

Syntaxe

Voici les syntaxes et les définitions de chaque fonction.

ROUND()

Le ROUND() La fonction peut être utilisée des deux manières suivantes :

ROUND(X)
ROUND(X,D)

ROUND() arrondit l'argument X à D décimales. L'algorithme d'arrondi dépend du type de données de X .

FLOOR()

Le FLOOR() fonction peut être utilisée avec une seule syntaxe :

FLOOR(X)

FLOOR() renvoie la plus grande valeur entière non supérieure à X .

Exemple de différence

Voici une comparaison pour démontrer la différence entre ROUND() et FLOOR() :

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789);

Résultat :

+---------------+---------------+
| FLOOR(3.6789) | ROUND(3.6789) |
+---------------+---------------+
|             3 |             4 |
+---------------+---------------+

Dans ce cas, le ROUND() fonction arrondit le nombre vers le haut, car le chiffre suivant (8 ) est supérieur à 5 .

Le FLOOR() fonction d'autre part, renvoyait simplement la plus grande valeur entière non supérieure à l'argument (3.6789 ).

Deuxième argument

Une autre différence est que ROUND() accepte un deuxième argument optionnel, alors que FLOOR() pas.

Le deuxième argument vous permet de spécifier le nombre de décimales auxquelles arrondir le nombre.

Exemple

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789, 2);

Résultat :

+---------------+------------------+
| FLOOR(3.6789) | ROUND(3.6789, 2) |
+---------------+------------------+
|             3 |             3.68 |
+---------------+------------------+

Exemple du même résultat

Ces fonctions peuvent parfois retourner le même résultat. Tout dépend de la valeur des arguments passés.

Par exemple, si nous plaçons un signe négatif devant les valeurs, nous obtenons le même résultat :

SELECT 
    FLOOR(-3.6789),
    ROUND(-3.6789);

Résultat :

+----------------+----------------+
| FLOOR(-3.6789) | ROUND(-3.6789) |
+----------------+----------------+
|             -4 |             -4 |
+----------------+----------------+

Cela ne veut pas dire qu'une valeur négative renvoie toujours le même résultat - ce n'est pas le cas. Tout dépend des valeurs réelles fournies et de l'arrondi à effectuer par ROUND() .

Voici un exemple où des valeurs négatives produisent des résultats différents :

SELECT 
    FLOOR(-3.3739),
    ROUND(-3.3739);

Résultat :

+----------------+----------------+
| FLOOR(-3.3739) | ROUND(-3.3739) |
+----------------+----------------+
|             -4 |             -3 |
+----------------+----------------+

Et voici un exemple où les valeurs positives renvoient le même résultat :

SELECT 
    FLOOR(3.3739),
    ROUND(3.3739);

Résultat :

+---------------+---------------+
| FLOOR(3.3739) | ROUND(3.3739) |
+---------------+---------------+
|             3 |             3 |
+---------------+---------------+

Le TRUNCATE() Fonction

Les deux fonctions sont différentes de TRUNCATE() fonction, qui tronque simplement la valeur à un nombre donné de décimales.